La boucle For est le coeur de l'automatisation en VBA : répéter une action sur chaque ligne d'une plage, sans copier-coller la même instruction des dizaines de fois. Dès qu'un traitement est répétitif, c'est elle qui entre en jeu !
Dans cet exercice, tu vas construire une macro qui trouve dynamiquement la dernière ligne remplie et parcourt tout le tableau pour écrire un résultat colonne par colonne. Une fois ce réflexe acquis, tu pourras l'adapter à n'importe quel traitement répétitif, quelle que soit la taille du tableau.
Ce que tu vas construire
Comprendre la structure d'une boucle For...Next et son rôle dans l'automatisation.
Trouver dynamiquement la dernière ligne remplie d'une colonne avec Cells(Rows.Count, 1).End(xlUp).Row.
Lire et écrire dans des cellules avec Cells(i, colonne) à l'intérieur d'une boucle.
Calculer une valeur ligne par ligne (prix TTC = prix HT x 1,2).
Éviter le hard-coding du nombre de lignes pour rendre la macro réutilisable.
À connaître avant de commencer
- Savoir créer un module et écrire un Sub (Alt+F11 > Insertion > Module).
- Connaître les variables et leur type (Dim ... As Long).
Voici les données de départ de cet exercice. Copie-les ou télécharge le fichier Excel, puis entraîne-toi avant de regarder le corrigé.
| A | B | C | |
|---|---|---|---|
| 1 | Produit | Prix HT | Prix TTC |
| 2 | Clavier | 29,90 | |
| 3 | Souris | 14,50 | |
| 4 | Écran | 149,00 | |
| 5 | Casque | 59,90 | |
| 6 | Webcam | 39,00 |
Exercice guidé
Coche chaque étape au fur et à mesure. Tente-la dans ton fichier, puis déplie le corrigé.
Avant d'écrire la boucle, on cherche dynamiquement la dernière ligne remplie. Cells(Rows.Count, 1).End(xlUp).Row part du bas de la colonne A et remonte (xlUp) jusqu'à la dernière cellule remplie, pour ne pas hard-coder le nombre de lignes.
Option Explicit
Sub CalculerTTC()
Dim derniereLigne As Long
derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
End SubAttention
- Adapter la colonne de référence (ici 1 = colonne A) selon la colonne qui contient les données.
- Ne jamais écrire « For i = 2 To 6 » en dur : si on ajoute des lignes, la macro s'arrête trop tôt ou rate des données.
Astuces pour aller plus loin
Cells(i, c) plutôt que Range dans une boucle
Dans une boucle For, Cells(i, 3) est plus simple que Range("C" & i) car l'indice de ligne i est directement utilisable. Range() oblige à concaténer une chaîne à chaque tour, ce qui est plus verbeux et légèrement moins lisible.
Trouve toujours la dernière ligne dynamiquement
Hard-coder « For i = 2 To 6 » fonctionne aujourd'hui, mais casse dès qu'on ajoute une ligne. Cells(Rows.Count, 1).End(xlUp).Row s'adapte automatiquement, quelle que soit la taille du tableau.
Pour aller plus loin sur les boucles VBA
Une fois la boucle For maîtrisée, on peut explorer Do While (boucle tant qu'une condition est vraie) et For Each (itération sur une collection d'objets). Tout est expliqué ici : https://blog.ledojo.club/loops-in-vba
Questions fréquentes
On écrit For i = debut To fin, puis les instructions à répéter, puis Next i. À chaque tour de boucle, i prend la valeur suivante. Par exemple, For i = 2 To 10 exécute le corps de la boucle pour i = 2, 3, 4... jusqu'à 10.
On combine la détection de la dernière ligne (Cells(Rows.Count, 1).End(xlUp).Row) avec une boucle For i = 2 To derniereLigne. Cells(i, colonne).Value donne accès à chaque cellule. On commence à 2 pour sauter la ligne d'en-tête.
La méthode classique est Cells(Rows.Count, 1).End(xlUp).Row : on part de la dernière cellule de la colonne A et on remonte (xlUp) jusqu'à la première cellule non vide. Adapter le 1 (numéro de colonne) selon la colonne de référence.
Range("C2") et Cells(2, 3) désignent la même cellule. Cells est préférable dans une boucle car on passe des indices numériques : Cells(i, 3) s'adapte automatiquement à chaque tour. Range est plus lisible pour des cellules fixes nommées explicitement.
3 exercices similaires à parcourir une plage avec une boucle For
Tableau de bord commercial
Créer un tableau de bord commercial complet pour suivre tes ventes, ton pipeline et tes objectifs avec des indicateurs visuels.
Voir l'exercice
Analyse des ventes par région
Construire un tableau d'analyse des ventes par région pour identifier tes zones fortes, tes zones en retard et prioriser tes efforts commerciaux.
Voir l'exercice
Pipeline commercial CRM
Construire un pipeline commercial dans Excel pour suivre tes opportunités de la prospection à la signature, calculer la valeur pondérée et prévoir ton CA.
Voir l'exercice
Envie de t'entraîner plus ?
Des dizaines de cas pratiques Excel corrigés pour progresser pour de vrai.
Voir tous les exercices