|
BOUCLES
Ces instructions permettent de répéter un bloc d'instructions
indéfiniment :
- jusqu'à ce qu'une condition soit vraie, vous utilisez alors Until devant
la condition
- tant qu'une condition est vraie, vous utilisez alors While devant
la condition.
Vous pouvez obliger votre code a exécuter le bloc d'instruction
au moins 1 fois, dans ce cas les instructions se présentent ainsi
:
| Jusque |
Tant que |
Do
Bloc d'instructions
Loop Until conditions |
Do
Bloc d'instructions
Loop While conditions |
Pour vérifier la condition dès le début dans la
boucle, elle peut donc ne pas être exécuter une seule fois,
utilisez les instructions ainsi :
| Jusque |
Tant que |
Do
Until conditions
Bloc d'instructions
Loop |
Do
While conditions
Bloc d'instructions
Loop |
Tapez puis lancez les exemples suivants, :
| Le message s'affiche |
Le message ne s'affiche
pas car aucune boucle est effectuée |
Sub
BoucleLoop()
Dim N As Byte
N = N + 1
Do
MsgBox "Message d'essai"
Loop Until N = 1
End Sub |
Sub
BoucleLoop()
Dim N As Byte
N = N + 1
Do Until N = 1
MsgBox "Message d'essai"
Loop
End Sub |
Sub
BoucleLoop()
Dim N As Byte
N = N + 1
Do
MsgBox "Message d'essai"
Loop While N < 1
End Sub |
Sub
BoucleLoop()
Dim N As Byte
N = N + 1
Do While N < 1
MsgBox "Message d'essai"
Loop
End Sub |
Vous pouvez sortir prématurément d'une boucle en utilisant
l'instruction Exit Do,
les 2 exemples suivants vous montrent l'utilisation de cette instruction
:
Sub
BoucleLoop()
Dim N As Byte
Do
N = N + 1
MsgBox "Message d'essai numéro " & N
Loop Until N = 5
End Sub |
Sub
BoucleLoop()
Dim N As Byte
Do
N = N + 1
MsgBox "Message d'essai numéro " & N
If N = 2 Then Exit Do
Loop Until N = 5
End Sub |
| Ce code affiche 5 fois le message |
Celui-ci l'affiche 2 fois |
Ces instructions permettent de répéter un bloc d'instructions
un certain nombre de fois. Vous indiquez la valeur de départ du
compteur, la valeur de fin de ce compteur et éventuellement le
pas d'incrémentation de cette valeur.
Le code suivant, affiche 3 messages
:
Sub BoucleFor()
Dim N As Byte
For N = 1 To 3
MsgBox "Message d'essai numéro " & N
Next
End Sub
Par défaut la valeur s'incrémente de 1, si vous voulez l'incrémenter
différemment ou même la décrémenter utilisez le mot
Step :
- Avec le code For N = 1 To 5 Step 2,
la variable N prend les valeurs 1,3 et 5.
- Avec For N = 5 To 1 Step -2, la variable
N prend les valeurs 5,3 et 1.
Vous pouvez sortir prématurément d'une boucle en utilisant Exit
For.
Vous pouvez imbriquer plusieurs boucles, mais ces boucles doivent s'imbriquer
et non se superposer, pour éviter les erreurs, vous pouvez ajouter
le nom de la variable après le mot Next :
| Bon |
Mauvais |
Sub
BoucleFor()
Dim Ligne As Byte, Col As Byte
For Col = 1 To 2
For Ligne = 1 To 5
Cells(Ligne, Col) = Ligne & " * " & Col
Next Ligne
MsgBox "Colonne n° " & Col & "remplie"
Next Col
End Sub |
Sub
BoucleFor()
Dim Ligne As Byte, Col As Byte
For Col = 1 To 2
For Ligne = 1 To 5
Cells(Ligne, Col) = Ligne & " * " & Col
Next Col
MsgBox "Colonne n° " & Col & "remplie"
Next Ligne
End Sub |
Ces instructions permettent de répéter un bloc d'instructions pour
chaque objet d'une collection ou pour chaque élément d'un tableau.
La variable de la boucle est automatiquement affecté à l'objet
ou à l'élément. Dans l'exemple suivant, La 1ere boucle
remplit un tableau et une plage depuis ce tableau, puis la 2ème lit
et sélectionne chaque cellule de la plage de cellules :
Sub BoucleForEach()
Dim Tableau(4) As String
Dim N
Dim Compteur As Byte
Dim MaCel As Range
For Each N In Tableau
Compteur = Compteur + 1
N = "valeur n°" & Compteur
Range("A" & Compteur) = N
Next
For Each MaCel In Range("A1:A" & Compteur)
MaCel.Select
MsgBox MaCel
Next
End Sub
Vous pouvez sortir prématurément d'une boucle en utilisant Exit For.
|