Accueil/Cours gratuits/Bibliothèque VBA/Boucles/Boucle For Next
Cours VBA gratuit | Boucles

La boucle For Next

Gratuit, sans inscription Niveau 2 / 3 | Intermédiaire Lecture 9 min V1.2 | 29/10/2026

C'est la boucle que l'on écrit le plus en VBA. Dès qu'il faut répéter la même action sur dix, cent ou dix mille lignes, For Next fait le travail à votre place. Et pour bien la comprendre, le plus efficace est encore de la regarder tourner.

Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer

01Définition

En une phrase

For Next répète un bloc d'instructions un nombre de fois connu à l'avance, en faisant varier un compteur d'une valeur de départ à une valeur de fin.

Le compteur, souvent nommé i, sert à deux choses : savoir combien de tours il reste, et désigner une ligne, une colonne ou un élément différent à chaque tour. C'est ce qui permet d'écrire Cells(i, 1) pour traiter A1, puis A2, puis A3, sans recopier la même ligne de code.

02Syntaxe

Syntaxe générale
For compteur = debut To fin [Step pas]
    ' instructions répétées à chaque tour
    [Exit For]
Next [compteur]
ÉlémentRôle
compteurVariable numérique, déclarée de préférence As Long. Elle change de valeur à chaque tour.
debutValeur du compteur au premier tour.
finDernière valeur traitée. La boucle s'arrête dès que le compteur la dépasse.
Step pasFacultatif. De combien le compteur avance à chaque tour : 1 par défaut, 2 pour une ligne sur deux, -1 pour remonter.
Exit ForFacultatif. Sort immédiatement de la boucle, sans attendre la fin.
Next compteurFin du bloc répété. Rappeler le nom du compteur est facultatif mais rend le code plus lisible.

03Simulateur pas à pas

Cliquez sur Pas à pas (ou appuyez sur F8) pour exécuter le code une ligne à la fois, exactement comme dans l'éditeur VBA. La ligne surlignée en jaune est celle qui va être exécutée. Observez la variable i dans les Variables locales et la feuille qui se remplit.

Ce que fait la boucle, tour par tour

Pour For i = 1 To 5 avec Cells(i, 1).Value = i :

TourValeur de iActionAprès Next
11écrit 1 en A1i passe à 2
22écrit 2 en A2i passe à 3
33écrit 3 en A3i passe à 4
44écrit 4 en A4i passe à 5
55écrit 5 en A5i passe à 6 : 6 dépasse 5, la boucle s'arrête
💡 AstuceLe même affichage dans Excel

Placez le curseur dans la macro, appuyez sur F8, puis affichez les Variables locales par le menu Affichage. Réduisez la fenêtre VBA pour voir la feuille réagir en même temps. Détails dans la fiche Déboguer pas à pas.

04Exemples à copier

Traiter toutes les lignes d'un tableau, jusqu'à la dernière

Le cas le plus courant : on ne sait pas combien de lignes contient le tableau, alors on calcule la dernière ligne avant de lancer la boucle.

Calculer un prix TTC sur chaque ligne
Sub CalculerTTC()
    Dim i As Long, derniereLigne As Long

    ' Dernière ligne remplie de la colonne A
    derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row

    ' Ligne 1 = en-têtes, on commence donc à 2
    For i = 2 To derniereLigne
        Cells(i, 3).Value = Cells(i, 2).Value * 1.2
    Next i
End Sub

Une ligne sur deux avec Step

Colorer une ligne sur deux
Sub UneLigneSurDeux()
    Dim i As Long, derniereLigne As Long
    derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To derniereLigne Step 2
        Rows(i).Interior.Color = RGB(235, 239, 255)
    Next i
End Sub

Supprimer des lignes en partant du bas

Supprimer les lignes dont la colonne A est vide
Sub SupprimerVides()
    Dim i As Long
    For i = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
        If Cells(i, 1).Value = "" Then Rows(i).Delete
    Next i
End Sub

Sortir dès qu'on a trouvé, avec Exit For

Rechercher un client
Sub ChercherClient()
    Dim i As Long, derniereLigne As Long, cherche As String
    cherche = InputBox("Nom du client recherché ?")
    derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To derniereLigne
        If Cells(i, 1).Value = cherche Then
            MsgBox cherche & " trouvé en ligne " & i
            Exit For   ' inutile de continuer
        End If
    Next i

    ' Si la boucle est allée au bout, i vaut derniereLigne + 1
    If i > derniereLigne Then MsgBox cherche & " introuvable."
End Sub

Deux boucles imbriquées

Une boucle pour les lignes, une autre pour les colonnes : chaque tour de la boucle extérieure déclenche la boucle intérieure en entier.

Table de multiplication 10 x 10
Sub TableMultiplication()
    Dim ligne As Long, colonne As Long

    For ligne = 1 To 10
        For colonne = 1 To 10
            Cells(ligne, colonne).Value = ligne * colonne
        Next colonne
    Next ligne
End Sub

05Pièges à éviter

⚠️ PiègeSupprimer des lignes en descendant

Si vous supprimez la ligne 3, l'ancienne ligne 4 remonte en 3... et la boucle passe directement à 4 : une ligne est sautée. Pour supprimer, on part toujours du bas avec Step -1.

⚠️ PiègeUne boucle qui ne tourne jamais

For i = 10 To 1 sans Step -1 ne fait aucun tour, et sans aucun message d'erreur. Quand le départ est plus grand que la fin, le pas négatif est obligatoire.

⚠️ PiègeLa fin est calculée une seule fois

La valeur de fin est lue au démarrage de la boucle. Si votre macro ajoute des lignes pendant la boucle, celles-ci ne seront pas traitées.

⚠️ PiègeInteger au lieu de Long

Un compteur déclaré As Integer plante au-delà de 32 767 (erreur 6, dépassement de capacité). Déclarez toujours vos compteurs As Long.

⚠️ PiègeModifier le compteur dans la boucle

Écrire i = i + 1 à l'intérieur de la boucle s'ajoute au Next et décale tout. Si le pas doit changer, utilisez Step, ou passez à une boucle Do While.

06For Next ou For Each ?

For Next

Quand on a besoin du numéro : la ligne en cours, une colonne voisine, un pas particulier ou un sens de parcours inversé.

For Each

Quand on veut simplement passer sur chaque élément d'un ensemble : chaque cellule d'une plage, chaque feuille d'un classeur. Voir For Each.

07Questions fréquentes

Comment fonctionne la boucle For Next en VBA ?

For Next répète un bloc d'instructions un nombre de fois connu à l'avance, en faisant varier un compteur d'une valeur de départ à une valeur de fin.

Quel est le piège le plus fréquent avec la boucle For Next ?

Supprimer des lignes en descendant. Si vous supprimez la ligne 3, l'ancienne ligne 4 remonte en 3... et la boucle passe directement à 4 : une ligne est sautée. Pour supprimer, on part toujours du bas avec Step -1.

La fiche « Boucle For Next » est-elle gratuite ?

Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.

Pour les formateurs

Passez de la fiche à la mise en situation

Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.

Découvrir l'étude de cas XL-05
Voir aussi

Toutes les fiches du cours VBA gratuit

Voir aussi le cours gratuit sur les formules Excel

Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA