La boucle For…Next en VBA Excel fait passer un traitement répétitif de plusieurs minutes de copier-coller à quelques secondes d’exécution. Pour un débutant qui manipule déjà des feuilles de calcul, comprendre cette structure permet de franchir le cap entre utilisation manuelle et automatisation. Cet article compare les approches (manuelle, formule, boucle VBA) et détaille, pas à pas, comment écrire une première boucle For sur une feuille Excel.
Boucle manuelle, formule Excel et boucle For VBA : tableau comparatif
Avant d’écrire la moindre ligne de code, il est utile de mesurer ce que chaque méthode implique en temps et en souplesse. Le tableau ci-dessous oppose trois façons de traiter une même tâche : appliquer un calcul à chaque ligne d’un tableau de données.
A lire en complément : Calculer 30% d'une somme : astuces pratiques pour Excel
| Critère | Copier-coller manuel | Formule Excel (recopie) | Boucle For VBA |
|---|---|---|---|
| Nombre d’actions utilisateur | Une par ligne (clic, copie, collage) | Une formule + poignée de recopie | Un seul lancement de macro |
| Risque d’erreur | Élevé (oubli de ligne, mauvaise cellule) | Moyen (référence mal verrouillée) | Faible si le code est testé |
| Adaptabilité à un nouveau classeur | Tout recommencer | Adapter les plages | Modifier une variable (range, nom de feuille) |
| Condition dynamique (ex : traiter seulement si colonne D contient du texte) | Vérification visuelle ligne par ligne | Possible avec SI/NB.SI, mais formule longue | Un simple If à l’intérieur de la boucle |
Le gain de la boucle VBA se manifeste surtout quand le nombre de lignes dépasse la centaine ou quand une condition filtre les données à traiter. En revanche, pour cinq lignes sans condition, une formule classique suffit.

A voir aussi : Analyser les données avec Excel : méthodes et astuces pour une analyse performante
Écrire sa première boucle For Next sur une feuille Excel
L’objectif de cette section est de produire un code fonctionnel en partant de zéro, directement dans l’éditeur VBA d’Excel. Ouvrez un classeur, puis accédez à l’éditeur avec Alt + F11.
Structure minimale du code VBA
Une boucle For Next repose sur trois éléments : une variable compteur, une borne de départ et une borne de fin. Voici le squelette :
Sub PremiereBoucle()
Dim i As Long
For i = 2 To 10
Cells(i, 2).Value = Cells(i, 1).Value * 1.2
Next i
End Sub
Ce code parcourt les lignes 2 à 10 de la feuille active. Pour chaque ligne, il multiplie la valeur de la colonne A par 1.2 et inscrit le résultat en colonne B. La variable Dim i As Long déclare le compteur. Le mot-clé Next incrémente i de 1 à chaque passage.
Ajouter une condition dans la boucle
Un cas fréquent sur les forums (y compris les discussions autour de Do While) consiste à ne traiter une ligne que si une cellule contient du texte. La combinaison For Next et If dans le code VBA résout ce besoin :
Sub BoucleAvecCondition()
Dim i As Long
For i = 2 To 100
If Cells(i, 4).Value <> « » Then
Cells(i, 3).Value = « Traité »
End If
Next i
End Sub
Ici, la boucle vérifie si la colonne D de chaque ligne contient du texte avant d’écrire « Traité » en colonne C. Cette logique remplace exactement le copier-coller conditionnel qu’un utilisateur ferait ligne par ligne.
For Next ou Do While : quelle boucle VBA choisir
Les débutants rencontrent souvent deux structures de boucle dans les tutoriels et sur les forums Excel. Le choix entre elles dépend d’un critère simple.
- For…Next convient quand le nombre d’itérations est connu à l’avance (parcourir les lignes 2 à 500, les colonnes A à F, les éléments d’un tableau de variable).
- Do While…Loop s’utilise quand la boucle doit continuer tant qu’une condition reste vraie, sans connaître le nombre exact de passages (lire des lignes jusqu’à la première cellule vide).
- Une boucle Do While mal construite (condition qui ne change jamais) peut tourner indéfiniment et bloquer Excel. La boucle For, bornée par nature, élimine ce risque.
Pour une première séance pratique, commencer par For Next réduit le risque de boucle infinie. Une fois la logique maîtrisée, passer à Do While pour des cas où la plage de données varie d’un classeur à l’autre.

Passer d’une feuille figée à un code réutilisable sur tout classeur
Un code qui fonctionne sur une seule feuille perd son intérêt si vous devez le réécrire pour chaque nouveau fichier. Deux ajustements transforment une boucle basique en outil réutilisable.
Remplacer les bornes fixes par une variable dynamique
Au lieu d’écrire For i = 2 To 100, calculez la dernière ligne remplie :
Dim derniereLigne As Long
derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To derniereLigne
La variable derniereLigne adapte la boucle au contenu réel de la feuille. Que votre tableau contienne dix ou mille lignes de données, le même code fonctionne sans modification.
Cibler une feuille par son nom
Si le classeur contient plusieurs feuilles, précisez la cible avec Worksheets(« NomDeLaFeuille »). Cela évite que la macro agisse sur la mauvaise feuille si l’utilisateur navigue pendant l’exécution.
Sub BoucleSurFeuille()
Dim ws As Worksheet
Set ws = Worksheets(« Donnees »)
Dim i As Long
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Cells(i, 2).Value = ws.Cells(i, 1).Value * 1.2
Next i
End Sub
Ce code cible explicitement la feuille « Donnees » du classeur, quel que soit l’onglet actif au moment du lancement.
Erreurs fréquentes dans une boucle For VBA Excel
Trois erreurs reviennent régulièrement chez les débutants en programmation VBA :
- Oublier de déclarer la variable avec Dim. Le code peut fonctionner sans, mais le type par défaut (Variant) ralentit l’exécution sur de grands tableaux et masque les erreurs de type.
- Démarrer la boucle à la ligne 1 alors que la ligne 1 contient les en-têtes. Résultat : l’en-tête est écrasée par le calcul.
- Utiliser un Range figé (« A2:A100 ») au lieu d’une variable calculant la dernière ligne remplie. Le jour où le tableau dépasse cent lignes, les données supplémentaires sont ignorées.
Les formations récentes en analyse de données et en contrôle de gestion intègrent désormais la boucle For Next comme étape charnière entre l’utilisation manuelle d’Excel et l’automatisation avancée, parfois en complément de Power BI. Maîtriser cette structure, même à un niveau basique, constitue une compétence de plus en plus mentionnée dans les offres liées à la data et à la finance.

