J'ai passé beaucoup de temps à faire des recherches et à apprendre comment tout cela fonctionne, après avoir vraiment gâché les déclencheurs d'événements. Comme il y avait tellement d'informations dispersées, j'ai décidé de partager ce que j'ai trouvé pour fonctionner en un seul endroit, étape par étape comme suit:
1) Ouvrez l'éditeur VBA, sous Projet VBA (YourWorkBookName.xlsm) ouvrez l'objet Microsoft Excel et sélectionnez la feuille à laquelle l'événement de modification se rapportera.
2) La vue de code par défaut est "Général". Dans la liste déroulante en haut au milieu, sélectionnez "Feuille de calcul".
3) Private Sub Worksheet_SelectionChange est déjà là comme il se doit, laissez-le seul. Copiez / collez le code de Mike Rosenblum ci-dessus et modifiez la référence .Range à la cellule pour laquelle vous attendez un changement (B3, dans mon cas). Cependant, ne placez pas encore votre macro (j'ai supprimé le mot "Macro" après "Then"):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
End Sub
ou dans la liste déroulante en haut à gauche, sélectionnez "Modifier" et dans l'espace entre Private Sub et End Sub, collez If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
4) Sur la ligne après "Then", désactivez les événements afin que lorsque vous appelez votre macro, elle ne déclenche pas d'événements et essayez d'exécuter à nouveau ce Worksheet_Change dans un cycle sans fin qui plante Excel et / ou tout gâche:
Application.EnableEvents = False
5) Appelez votre macro
Call YourMacroName
6) Réactivez les événements pour que le prochain changement (et tous les autres événements) se déclenche:
Application.EnableEvents = True
7) Terminez le bloc If et le Sub:
End If
End Sub
Le code entier:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B3")) Is Nothing Then
Application.EnableEvents = False
Call UpdateAndViewOnly
Application.EnableEvents = True
End If
End Sub
Cela nécessite l'activation / désactivation des événements des modules, ce qui crée des problèmes et laisse simplement le changement se déclencher, désactive les événements, exécute votre macro et réactive les événements.