Utilisation de For...Next

Vous pouvez utiliser des instructions For...Next pour exécuter un bloc d'instructions un nombre spécifique de fois. Pour les boucles, utilisez une variable de compteur dont la valeur augmente ou diminue à chaque répétition de la boucle.

L'exemple suivant entraîne 50 exécutions d'une procédure nommée MyProc. L'instruction For indique la variable de compteur x ainsi que ses valeurs de début et de fin. L'instruction Next incrémente la variable de compteur de 1.

Les exemples suivants illustrent l'utilisation de la boucle For...Next :

Exemple 1 :

Sub DoMyProc50Times()
   Dim x
   For x = 1 To 50
      'This loop executes 50 times
   Next
End Sub

A l'aide du mot-clé Step, vous pouvez augmenter ou réduire la variable de compteur de la valeur indiquée. Dans l'exemple suivant, la variable de compteur j est incrémentée de 2 à chaque répétition de la boucle. Lorsque la boucle est terminée, le total est égal à la somme de 2, 4, 6, 8 et 10.

Exemple 2 :

Sub TwosTotal()
Dim j, total
    total = 0
    For j = 2 To 10 Step 2
        total = total + j
    Next
 'The total is 30
End Sub

Pour réduire la variable de compteur, utilisez une valeur Step négative. Vous devez indiquer une valeur de fin inférieure à la valeur de début. Dans l'exemple suivant, la variable de compteur myNum est réduite de 2 à chaque répétition de la boucle. Lorsque la boucle est terminée, le total est égal à la somme de 16, 14, 12, 10, 8, 6, 4 et 2.

Exemple 3 :

Sub NewTotal()
   Dim myNum, total
    total = 0
    For myNum = 16 To 2 Step -2
        total = total + myNum
    Next
    'The total is 72
End Sub

Vous pouvez quitter n'importe quelle instruction For...Next avant que le compteur n'atteigne sa valeur de fin à l'aide de l'instruction Exit For. Etant donné que vous voulez généralement sortir d'une boucle dans certaines situations uniquement, par exemple lors de la survenue d'une erreur, vous devez utiliser l'instruction Exit For dans le bloc d'instructions True d'une instruction If...Then...Else. Si la condition est False, la boucle est exécutée normalement.

Exemple 4 :

Sub ExitForExample()
        Dim i, total
        total = 0
        For i = 1 To 10
                        total = total + i
                 If i = 5 Then Exit For
        Next
        'Exited loop early. Total is 15
End Sub

Exemple 5 :

Sub DecreaseWithExit()
        Dim n, sum
        sum = 0
        For n = 20 To 0 Step -2
                        sum = sum + n
                        If n = 10 Then Exit For
        Next
         'Exited loop early. sum is 90
End Sub