Automatiser le repérage des relances clients sur Excel
Un exercice corrigé pour automatiser le repérage des relances clients avec une macro VBA complète (boucle + condition), et s'entraîner sur le fichier Excel à télécharger.
Cet exercice est le projet de synthèse de la série VBA débutant, qui réunit boucle For, condition If, compteur et MsgBox dans une seule macro. On passe ici de la technique isolée au vrai mini-outil opérationnel !
Tu vas construire une macro qui parcourt un tableau de commandes, teste deux critères simultanément avec And, colore la cellule Action des commandes à relancer et affiche un message récapitulatif. Une fois ce schéma maîtrisé, tu sauras l'adapter à bien d'autres situations, des relances aux alertes de stock en passant par les rapports automatisés... la logique reste la même.
Ce que tu vas construire
- Combiner une boucle For et une condition If dans une seule macro.
- Tester deux critères simultanément avec l'opérateur And.
- Incrémenter un compteur à l'intérieur d'un bloc conditionnel.
- Appliquer une couleur de fond avec Interior.Color et RGB().
- Afficher un message récapitulatif avec MsgBox à la fin de la macro.
À connaître avant de commencer
- Maîtriser la boucle For et la condition If en VBA.
- Connaître Cells(ligne, colonne) et la dernière ligne dynamique.
Voici les données de départ de cet exercice. Copie-les ou , puis entraîne-toi avant de regarder le corrigé.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Date | Client | Montant | Statut | Action |
| 2 | 05/01/2026 | Acme | 1 500 | En attente | |
| 3 | 08/01/2026 | Bralt | 800 | Payée | |
| 4 | 12/01/2026 | Cima | 2 300 | En attente | |
| 5 | 20/01/2026 | Delos | 950 | En attente | |
| 6 | 25/01/2026 | Egide | 1 200 | Payée | |
| 7 | 02/02/2026 | Fyx | 3 000 | En attente | |
| 8 | 04/02/2026 | Galva | 1 850 | Payée | |
| 9 | 09/02/2026 | Hélios | 1 000 | En attente | |
| 10 | 13/02/2026 | Iris | 4 200 | En attente | |
| 11 | 17/02/2026 | Jade | 600 | Payée | |
| 12 | 23/02/2026 | Kalon | 1 750 | En attente | |
| 13 | 27/02/2026 | Lumo | 2 900 | Payée |
Résoudre l'exercice étape par étape
Coche chaque étape au fur et à mesure. Tente-la dans ton fichier, puis déplie le corrigé.
Astuces pour aller plus loin
Documente ta macro avec des commentaires
En VBA, une apostrophe en début de ligne transforme la ligne en commentaire (elle est ignorée à l'exécution). Ajouter ' Boucle sur les commandes ou ' Compteur de relances rend la macro lisible pour toi et pour tes collègues.
Un MsgBox récapitulatif transforme une macro en mini-outil
Afficher le nombre de relances à la fin évite d'aller compter les cellules colorées à la main. On peut enrichir le message avec MsgBox nbRelances & " commande(s) à relancer sur " & (derniereLigne - 1) & " lignes.", qui affiche ici 5 commande(s) à relancer sur 12 lignes.
Pour aller plus loin sur les boucles VBA
Une fois And maîtrisé, explore Or (au moins une condition vraie), Not (inverse la condition) et les boucles Do While pour les listes de longueur inconnue. Exemples commentés ici : https://ledojo.club/blog/loops-in-vba
S'entraîner sur 3 exercices similaires à automatiser le repérage des relances clients
Tableau de bord commercial
Construire un tableau de bord commercial pour suivre le CA, le taux de conversion, le classement et l'atteinte des objectifs de chaque vendeur.
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
Tu as peut-être encore une question
On place l'opérateur And entre les deux conditions dans le If : If Cells(i, 3).Value > 1000 And Cells(i, 4).Value = "En attente" Then. And exige que les deux soient vraies ; Or suffit d'une seule vraie. On peut enchaîner autant de conditions que nécessaire.
On déclare une variable compteur (Dim nbRelances As Long), on l'initialise à 0 avant la boucle, puis on l'incrémente avec nbRelances = nbRelances + 1 à l'intérieur du bloc conditionnel. À la fin de la boucle, la variable contient le total des éléments qui ont satisfait la condition.
On ouvre l'éditeur VBA (Alt+F11), on insère un module (Insertion > Module) et on écrit un Sub avec une boucle For qui parcourt les lignes. On applique la logique métier à l'intérieur (condition If, écriture dans une cellule, couleur). On exécute avec F5 ou Alt+F8.
VBA est sensible à la casse par défaut : "En attente" et "en attente" sont différents. Un espace invisible en fin de valeur suffit aussi à faire échouer la comparaison. Pour plus de souplesse, on peut utiliser LCase() pour normaliser : If LCase(Cells(i, 4).Value) = "en attente" Then.
Pour aller plus loin
Tout ce dont tu as besoin pour continuer à t’entraîner se trouve ici.







