On a tous vécu ce moment où un reporting mensuel demande de parcourir ligne par ligne un tableau de plusieurs centaines d’entrées pour appliquer la même opération. La boucle For en VBA existe pour déléguer cette répétition à Excel. Sa syntaxe tient en quelques lignes, mais son usage en contexte professionnel mérite qu’on s’arrête sur les détails qui font la différence entre un code fragile et un code fiable.
Syntaxe de la boucle For Next en VBA : ce qui se joue à chaque ligne
La structure de base ressemble à ceci :
A lire en complément : Version la plus récente de Excel : Découvrez-la en un clin d'oeil !
For i = 1 To 10 Cells(i, 1).Value = i * 2Next i
Trois éléments à retenir. Le compteur (i) démarre à la valeur initiale, progresse d’un pas à chaque itération, et la boucle s’arrête quand il dépasse la borne finale. Par défaut, le pas vaut 1.
A découvrir également : Mise en forme efficace d'un tableau Excel : techniques et astuces
On peut modifier ce pas avec le mot-clé Step. Un Step 2 traite une ligne sur deux. Un Step -1 parcourt le tableau en sens inverse, du bas vers le haut.
Ce dernier point n’a rien d’anecdotique. Parcourir en décrémentation est indispensable pour supprimer des lignes dans un tableau sans décaler les index en cours de route. Quand on supprime la ligne 50 en parcours ascendant, la ligne 51 prend la position 50 et se retrouve ignorée. En parcours descendant, ce problème disparaît.

For Each en VBA : parcourir des objets Excel sans compter les lignes
Dans beaucoup de cas métier, on ne connaît pas à l’avance le nombre exact d’éléments à traiter. Un classeur peut contenir un nombre variable de feuilles, une plage peut changer de taille d’un mois à l’autre. La variante For Each règle ce problème.
For Each ws In ThisWorkbook.Worksheets ws.Range("A1").Value = "Consolidé"Next ws
Ici, ws représente chaque feuille du classeur. Pas besoin de savoir combien il y en a. For Each s’adapte automatiquement à la taille de la collection, qu’il s’agisse de feuilles, de cellules d’une plage ou de graphiques embarqués.
Quand choisir For Next ou For Each
- On utilise
For Nextquand on a besoin du numéro d’index (traiter la ligne 5, comparer la ligne i avec la ligne i-1, insérer un résultat à une position précise). - On utilise
For Eachquand on veut appliquer une action identique à tous les éléments d’une collection sans se soucier de leur position. - Si le traitement nécessite de supprimer des éléments en cours de boucle,
For NextavecStep -1reste le choix sûr.For Eachpeut provoquer des erreurs d’exécution dans ce cas.
Cas d’usage concrets de la boucle For en entreprise
Les formations VBA récentes intègrent les boucles comme un socle de compétences, un prérequis avant d’aborder l’automatisation de processus plus larges (génération de PDF, envoi d’e-mails via Outlook, interaction avec des bases de données). Voici trois situations terrain où la boucle For fait gagner du temps de façon mesurable.
Consolidation multi-onglets en fin de mois
On reçoit un classeur avec un onglet par service. Chaque onglet a la même structure : colonnes identiques, nombre de lignes variable. Une boucle For Each sur les feuilles, combinée à une boucle For Next sur les lignes de chaque feuille, permet de copier toutes les données vers un onglet de synthèse.
Le code tient en une quinzaine de lignes. Sans boucle, la même opération mobilise un copier-coller par onglet, avec le risque d’oublier une feuille ou de coller au mauvais endroit.
Nettoyage de données avant import
Avant d’injecter des données dans un ERP ou un outil BI, on doit souvent supprimer les lignes vides, corriger des formats de date ou retirer des doublons. Une boucle For avec Step -1 parcourt le tableau de bas en haut et supprime les lignes qui ne respectent pas les critères, sans jamais sauter une entrée.
Numérotation et mise en forme conditionnelle par macro
Attribuer un numéro séquentiel à des lignes filtrées, appliquer une couleur de fond selon un seuil, verrouiller certaines cellules en fonction de leur contenu : ces opérations se codent avec une boucle For Next et quelques conditions If imbriquées. Le résultat est reproductible d’un mois à l’autre sans intervention manuelle.

Erreurs fréquentes et limites de la boucle For VBA
Le piège le plus courant reste la boucle infinie. Avec Do...Loop, oublier de modifier la condition de sortie bloque Excel. Avec For Next, le risque est moindre puisque le compteur s’incrémente automatiquement, mais il existe si on modifie manuellement le compteur dans le corps de la boucle. Règle simple : ne jamais réaffecter la variable de compteur à l’intérieur du bloc.
Autre point à surveiller : la performance. Parcourir des dizaines de milliers de lignes cellule par cellule fonctionne, mais peut devenir lent. Désactiver le rafraîchissement d’écran (Application.ScreenUpdating = False) et le calcul automatique (Application.Calculation = xlCalculationManual) avant la boucle, puis les réactiver après, réduit le temps d’exécution de façon significative.
- Toujours déclarer le type du compteur (
Dim i As Long) pour éviter les erreurs de typage et améliorer la lisibilité. - Utiliser
Exit Forpour sortir proprement d’une boucle quand la condition recherchée est remplie, plutôt que de laisser le code tourner inutilement. - Commenter le code : une boucle claire aujourd’hui devient obscure dans six mois si personne n’a noté ce qu’elle fait.
Boucle VBA et compétence transférable vers Power Platform
Dans les offres d’emploi récentes pour des postes de data analyst ou de support métier, la logique de boucle est citée comme compétence recherchée au même titre que la maîtrise des fonctions, indépendamment du langage utilisé. Comprendre comment fonctionne une itération en VBA prépare à manipuler des flux dans Power Automate, des collections dans Power Apps ou des boucles DAX dans Power BI.
Certaines entreprises migrent progressivement leurs macros VBA vers des solutions low-code sur Power Platform pour limiter la dépendance aux profils techniques. Les retours varient sur ce point : des équipes gagnent en autonomie, d’autres perdent la souplesse du code VBA sur des traitements très spécifiques. La boucle For reste un bon point d’entrée pour acquérir la logique d’automatisation, quel que soit l’outil cible ensuite.

