🔁 Les boucles
Une boucle permet de répéter automatiquement une série d’instructions. Elle est utilisée lorsque l’on souhaite exécuter plusieurs fois le même traitement, sans avoir à recopier le code.
Le nombre de répétitions peut :
- être connu à l’avance
- dépendre d’une condition logique
Attention : si aucune condition de sortie n’est prévue, une boucle peut devenir infinie. Cela peut bloquer Excel ou provoquer un plantage.
Pourquoi utiliser une boucle ?
Les deux codes ci-dessous produisent exactement le même résultat, mais le second est beaucoup plus efficace et lisible.
Sub SansBoucle()
Cells(1, 1).Value = 1
Cells(2, 1).Value = 2
Cells(3, 1).Value = 3
Cells(4, 1).Value = 4
Cells(5, 1).Value = 5
End Sub
Sub AvecBoucle()
Dim i As Integer
i = 1
While i <= 5
Cells(i, 1).Value = i
i = i + 1
Wend
End Sub
La boucle permet ici de répéter la même instruction sans duplication de code.
Boucle While
La boucle While (en anglais « tant que ») répète les instructions tant que la condition est vraie. La condition est testée avant chaque itération.
While condition
'Instructions exécutées tant que la condition est vraie
Wend
Exemple concret :
Dim i As Integer
i = 1
While i <= 100
Cells(i, 1).Value = i
i = i + 1
Wend
Dans cet exemple :
- la variable
iest initialisée à 1 - la boucle s’exécute tant que
i <= 100 iest incrémentée à chaque passage
L’incrémentation est essentielle : sans elle, la condition resterait toujours vraie.
Boucle Do
La boucle Do fonctionne sur le même principe que While, mais elle est plus souple.
La condition peut être testée :
- avant l’exécution de la boucle
- après l’exécution de la boucle
Il est également possible d’utiliser :
While→ tant que la condition est vraieUntil→ jusqu’à ce que la condition devienne vraie
Condition testée avant la boucle
Dim i As Integer
i = 1
Do While i <= 100
Cells(i, 1).Value = i
i = i + 1
Loop
Si la condition est fausse dès le départ, la boucle ne s’exécute pas.
Condition testée après la boucle
Dim i As Integer
i = 1
Do
Cells(i, 1).Value = i
i = i + 1
Loop While i <= 100
Dans ce cas, les instructions sont exécutées au moins une fois.
Utilisation de Until
Dim i As Integer
i = 1
Do Until i > 100
Cells(i, 1).Value = i
i = i + 1
Loop
La boucle continue tant que la condition n’est pas vraie.
Boucle For
La boucle For est utilisée lorsque le nombre de répétitions est connu à l’avance.
Elle repose sur une variable compteur qui évolue automatiquement.
For i = 1 To 20
Cells(i, 1).Value = i
Next i
Dans cet exemple :
- la variable
icommence à 1 - elle est augmentée automatiquement de 1
- la boucle s’arrête lorsque
idépasse 20
La boucle For est généralement la plus lisible lorsque l’on connaît le nombre d’itérations.
Quitter une boucle prématurément
Il est parfois nécessaire de sortir d’une boucle avant sa fin normale. VBA propose des instructions dédiées :
Exit For 'Quitte une boucle For
Exit Do 'Quitte une boucle Do ou While
Ces instructions sont souvent utilisées avec une condition :
For i = 1 To 100
If Cells(i, 1).Value = "" Then
Exit For
End If
Next i
Dès que la condition est remplie, la boucle est interrompue immédiatement.