While
Les boucles permettent de répéter des instructions un certain nombre de fois, ce qui peut être un gain de temps considérable.Le code suivant numérote les cellules de la colonne A (de la ligne 1 à 12) :
Sub boucle_while()
Cells(1, 1) = 1
Cells(2, 1) = 2
Cells(3, 1) = 3
Cells(4, 1) = 4
Cells(5, 1) = 5
Cells(6, 1) = 6
Cells(7, 1) = 7
Cells(8, 1) = 8
Cells(9, 1) = 9
Cells(10, 1) = 10
Cells(11, 1) = 11
Cells(12, 1) = 12
End Sub
Maintenant, imaginez qu'il faille numéroter plusieurs centaines de lignes ... Vous comprenez donc l'intérêt de créer des boucles.
Voici la boucle While :
Sub boucle_while()
While [condition]
'Instructions
Wend
End Sub
Voici la macro répétitive ci-dessus avec la boucle While :
Sub boucle_while()
Dim numero As Integer
numero = 1 'Numéro de départ (correspond ici au n° de ligne et au n° de numérotation)
While numero <= 12 'TANT QUE la variable numero est <= 12, la boucle est répétée
Cells(numero, 1) = numero 'Numérotation
numero = numero + 1 'Le numéro est augmenté de 1 à chaque boucle
Wend
End Sub
Do Loop
Cette boucle fonctionne de la même manière que While Wend (tant que la condition est vraie, la boucle est exécutée) :Sub boucle_do_while()
Do While [condition]
'Instructions
Loop
End Sub
Sub boucle_do_while()
Do
'Instructions
Loop While [condition]
End Sub
Sub boucle_do_while()
Do Until [condition]
'Instructions
Loop
End Sub
For
Sub boucle_for()
For i = 1 To 5
'Instructions
Next
End Sub
A chaque répétition de la boucle, la variable i est automatiquement augmentée de 1 :
Sub boucle_for()
For i = 1 To 5
MsgBox i
Next
End Sub
Quitter une boucle prématurément
Il est possible de quitter une boucle For prématurément grâce à l'instruction suivante :Exit For 'Quitter une boucle For
Sub boucle_for()
Dim max_boucles As Integer
max_boucles = Range("A1") 'En A1 : une limite de répétitions de la boucle est définie
For i = 1 To 7 'Boucles prévues : 7
If i > max_boucles Then 'Si A1 est vide ou contient un nombre < 7, diminution du nb de boucles
Exit For 'Si condition vraie, on quitte la boucle For
End If
MsgBox i
Next
End Sub
Exit Do 'Quitter une boucle Do Loop
Exit Sub 'Quitter une procédure
Exit Function 'Quitter une fonction
Aucun commentaire:
Enregistrer un commentaire