J'ai passé beaucoup de temps à rechercher et à apprendre comment tout cela fonctionne, après avoir vraiment perturbé les déclencheurs d'événements. Comme il y avait tellement d'informations dispersées, j'ai décidé de partager tout ce que j'ai trouvé qui fonctionne, tout au même endroit, pas à pas comme suit :
1) Ouvrez l'Éditeur VBA, sous le Projet VBA (VotreNomDeClasseur.xlsm) ouvrez l'Objet Microsoft Excel et sélectionnez la Feuille à laquelle l'événement de changement sera lié.
2) La vue par défaut du code est "Général". Dans la liste déroulante en haut au milieu, sélectionnez "Feuille de calcul".
3) Private Sub Worksheet_SelectionChange y est déjà comme il se doit, ne le modifiez pas. Copiez/collez le code de Mike Rosenblum ci-dessus et changez la référence .Range à la cellule pour laquelle vous surveillez un changement (B3, dans mon cas). Ne placez pas encore votre Macro, cependant (j'ai enlevé 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 "Changer" et dans l'espace entre Private Sub et End Sub, collez If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
4) À la ligne après "Then" désactivez les événements pour que lorsque vous appelez votre macro, cela ne déclenche pas d'événements et essaie de relancer ce Worksheet_Change dans un cycle sans fin qui fait planter Excel et/ou perturbe autrement tout :
Application.EnableEvents = False
5) Appelez votre macro
Call NomDeVotreMacro
6) Réactivez les événements pour que le prochain changement (et tous les autres événements) se déclenchent :
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 permet d'éliminer le fait de mettre en marche/arrêt les événements dans les modules, ce qui crée des problèmes et permet simplement au changement de se déclencher, de désactiver les événements, d'exécuter votre macro et de réactiver les événements.
0 votes
Est-ce que la fonction RunMacroWhenValueChanges dans FormulaDesk répond à vos besoins? formuladesk.com
0 votes
Possible duplicate de excel VBA exécutez automatiquement le macro chaque fois qu'une cellule est modifiée