Aller au contenu principal
LogisticiensAvancé25 min

Traiter des données avec une condition If sur Excel

Un exercice corrigé pour faire réagir une macro selon la valeur des cellules avec la condition If en VBA, et s'entraîner sur le fichier Excel à télécharger.

Une macro devient vraiment utile quand elle ne se contente plus de répéter la même opération et qu'elle décide ! La condition If permet à VBA d'agir différemment selon la valeur trouvée dans chaque cellule, passant ainsi de l'automatisation mécanique à l'automatisation intelligente.

Dans cet exercice, tu vas combiner boucle For et condition If pour parcourir un tableau de stocks, marquer les références sous le seuil et appliquer une couleur d'alerte. Et la logique If...Else...End If que tu vas construire ici se transfère directement à n'importe quel tableau de données, du suivi de commandes aux relances clients en passant par le contrôle qualité...

Le savais-tu ?
En VBA, le signe = sert à comparer les valeurs, pas le == que tu croises dans d'autres langages, et l'opérateur < exclut l'égalité. C'est pour ça que REF-005, avec un stock de 12 pile égal à son minimum, reste « OK » et ne passe pas en « À commander ».

Ce que tu vas construire

  • Comprendre la structure If...Then...Else...End If et son rôle dans une macro.
  • Comparer deux valeurs de cellules avec l'opérateur < à l'intérieur d'une boucle.
  • Écrire un résultat différent selon la condition (« À commander » ou « OK »).
  • Appliquer une couleur de fond conditionnelle avec Interior.Color et RGB().
  • Distinguer les cas limites : l'égalité (12 = 12) n'est pas incluse dans <.

À connaître avant de commencer

  • Savoir écrire une boucle For qui parcourt une plage.
  • Connaître la référence Cells(ligne, colonne).

Voici les données de départ de cet exercice. Copie-les ou , puis entraîne-toi avant de regarder le corrigé.

ABCD
1RéférenceStock actuelStock miniStatut
2REF-001410
3REF-0022510
4REF-003015
5REF-0044020
6REF-0051212
7REF-0061825
8REF-0076030
9REF-00898
10REF-00935
11REF-0103515
12REF-0111420
13REF-0125040

Résoudre l'exercice étape par étape

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

Ta progression
0/2
1
Boucle avec condition IfDans l'éditeur VBA (Alt+F11 > Insertion > Module), écris un Sub MarquerStock avec une boucle For et une condition If qui compare Stock actuel (colonne B) au Stock mini (colonne C) et inscrit en colonne D « À commander » quand le stock actuel est strictement inférieur au stock mini, « OK » sinon (un stock égal au minimum reste donc OK). Dès que le module est créé, enregistre le classeur avec Fichier > Enregistrer sous, au format classeur Excel prenant en charge les macros (.xlsm), sinon ta macro disparaît à la prochaine ouverture.
2
Ajouter une couleur d'alerteÉtends la macro pour qu'elle colore le fond de chaque cellule Statut en rouge clair (RGB(254, 226, 226)) quand la référence est sous le seuil, puis exécute-la et vérifie les résultats.
Le défi
Ta macro marque et colore déjà les stocks sous le seuil ? Cache le corrigé et ajoute un palier avec ElseIf pour la rupture totale de REF-003, dont le stock vaut 0, sur un fond rouge vif RGB(220, 38, 38). Place le test de rupture en premier, sinon 0 < 15 range REF-003 dans « À commander » avant d'atteindre ta rupture.

Astuces pour aller plus loin

ElseIf pour plusieurs paliers

Quand on veut gérer trois cas ou plus (rupture totale, stock faible, OK), on enchaîne les conditions avec ElseIf : If ... Then / ElseIf ... Then / Else / End If. Chaque palier est évalué dans l'ordre, le premier vrai s'applique.

Combine la condition avec une couleur pour un repère visuel immédiat

Écrire le texte et appliquer la couleur dans le même bloc If évite deux boucles séparées. Interior.Color = RGB(254, 226, 226) donne un rouge clair discret ; RGB(220, 38, 38) donne un rouge vif pour les alertes critiques.

Pour aller plus loin sur les boucles VBA

Une fois la condition If combinée à la boucle For, on peut explorer Do While (répéter tant qu'une condition est vraie) et For Each (itérer sur une collection d'objets). Exemples commentés ici : https://ledojo.club/blog/loops-in-vba

S'entraîner sur 3 exercices similaires à traiter des données avec une condition If

01

Planning de production

Créer un planning de production qui calcule automatiquement les dates de livraison en tenant compte des jours ouvrés, des contraintes de capacité et des priorités.
Voir l'exercice

02

Gestion des stocks et réappro

Construire un tableau de gestion des stocks qui calcule le stock disponible, déclenche les alertes de réappro et identifie les surstocks. Gérer 200 références sans stress.
Voir l'exercice

03

Colorer un suivi de stock automatiquement

Mettre en couleur un suivi de stock avec la mise en forme conditionnelle, des alertes rouges sous le seuil, des barres de données et un jeu d'icônes.
Voir l'exercice

Tu as peut-être encore une question

La structure est : If condition Then / instructions / Else / autres instructions / End If. La condition est une expression booléenne (ex. Cells(i, 2).Value < Cells(i, 3).Value). End If est obligatoire pour fermer le bloc.

Pour aller plus loin

Tout ce dont tu as besoin pour continuer à t’entraîner se trouve ici.

Besoin d’aide sur Excel ?

Rejoins le Dojo pour poser tes questions, obtenir de l’aide sur tes fichiers Excel et participer chaque mois à un cours collectif en direct.

Gratuit · Sans carte bancaire