Aller au contenu principal
CommerciauxAvancé25 min

Parcourir une plage avec une boucle For sur Excel

Un exercice corrigé pour automatiser un calcul ligne par ligne avec une boucle For en VBA, et s'entraîner sur le fichier Excel à télécharger.

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.

Le conseil du pro
Le réflexe qui rend une macro réutilisable : ne jamais écrire For i = 2 To 6 en dur. Cells(Rows.Count, 1).End(xlUp).Row remonte du bas de la colonne A jusqu'à la dernière cellule remplie, 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é.

ABC
1ProduitPrix HTPrix TTC
2Clavier29,90
3Souris14,50
4Écran149,00
5Casque59,90
6Webcam39,00

Exercice guidé

Coche chaque étape au fur et à mesure. Tente-la dans ton fichier, puis déplie le corrigé.

Ta progression
0/3
1
Trouver la dernière ligneDans l'éditeur VBA (Alt+F11 > Insertion > Module), écris un Sub CalculerTTC et utilise Cells(Rows.Count, 1).End(xlUp).Row pour trouver la dernière ligne remplie de la colonne A.
2
Écrire la boucle ForÀ l'intérieur du Sub, ajoute une boucle For i = 2 To derniereLigne qui lit le prix HT en colonne B et écrit le prix TTC (x 1,2) en colonne C.
3
Exécuter et vérifierExécute la macro avec F5 (ou Alt+F8 > CalculerTTC > Exécuter) et vérifie que la colonne Prix TTC est remplie avec les bons montants.
Le défi
Ta boucle remplit la colonne Prix TTC ? Cache le corrigé et réécris-la pour appliquer une remise de 10 % dans une nouvelle colonne : le squelette For i = 2 To derniereLigne ne bouge pas, tu ne changes que le calcul sur chaque ligne.

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

3 exercices similaires à parcourir une plage avec une boucle For

01

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

02

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

03

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

Le modèle prêt à l'emploi

Le modèle Excel « CRM simple »

Découvre notre CRM Excel pour suivre contacts, opportunités et relances commerciales au même endroit

FAQ

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.