Loop For VBA : structure, syntaxe et cas d’usage en entreprise

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 * 2
Next 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.

Professionnelle pointant un code VBA For Loop sur un écran d'ordinateur dans un espace de coworking

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 Next quand 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 Each quand 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 Next avec Step -1 reste le choix sûr. For Each peut 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.

Station de travail avec deux écrans affichant Excel et l'éditeur VBA avec une structure de boucle For Loop

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 For pour 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.

Les immanquables