Leçon 7 / 9 — Chapitre 4: Interaction, fonctions et automatisation
L'événement Worksheet_Change
Toutes les macros vues jusqu'ici se lancent manuellement (bouton, raccourci). Un événement, lui, se déclenche AUTOMATIQUEMENT quand quelque chose se produit dans le classeur — ici, dès qu'une cellule est modifiée sur une feuille donnée.
Où placer ce code
Contrairement aux Sub habituelles écrites dans un Module standard, le code d'un événement de feuille doit être placé dans le module de code DE LA FEUILLE elle-même (double-clic sur le nom de la feuille dans l'Explorateur de projets, à gauche de l'éditeur VBA).
La structure de l'événement
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
MsgBox "La cellule B2 a été modifiée"
End If
End Sub
Ce code s'exécute automatiquement à CHAQUE modification, sur N'IMPORTE QUELLE cellule de la feuille. Le paramètre Target représente la cellule qui vient d'être modifiée ; le If Target.Address = "$B$2" filtre pour ne réagir que si c'est précisément cette cellule-là qui a changé, en ignorant toutes les autres modifications.
Un usage courant : valider une saisie automatiquement
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$5" Then
If Target.Value < 0 Then
MsgBox "Valeur invalide : ne peut pas être négative"
End If
End If
End Sub
Exemple concret : un tableau de suivi de budget doit alerter automatiquement dès qu'une dépense saisie dépasse un montant limite dans une cellule précise, sans que l'utilisateur ait besoin de cliquer sur un bouton — l'alerte doit apparaître au moment même de la saisie, ce que seul un événement peut déclencher.
À vous de jouer : placez un Worksheet_Change dans le module d'une feuille, qui affiche un message d'avertissement dès que la cellule A1 est modifiée pour contenir une valeur négative.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 76 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès