Ne pas activer Worksheet_Change si pas sur la feuille

Bonjour,

J'utilise un Worksheet_Change() dans une feuille.

Le code contenu dans Worksheet_Change() ne doit pas se déclencher quand je change de classeur ou même de feuille.

Mais je ne sais pas du tout comment procéder pour couper l'activation de Worksheet_Change si on n'est pas sur la feuille de la macro.

J'ai essayé de mettre :

Private Sub Worksheet_Deactivate()
Application.EnableEvents = False
Application.EnableEvents = True
End Sub

Mais ça ne fonctionne pas.

Pourriez-vous me donner l'astuce qui permet de ne pas activer worksheet_change quand on change de feuille s'il vous plait ?

Bonjour Damiani

Une Worksheet_Change() se met dans le module de la feuille concernée et n'impacte pas les autres.

Ne l'aurai tu pas mis dans le Thisworkbook ?

Cordialement

Bonjour,

Dans ThisWorkbook, elle n'aurait aucun effet, son nom ne correspond pas à la procédure équivalente de niveau classeur.

Mais en effet elle ne se déclenche que si l'évènement Change concerne la feuille à laquelle elle est attachée...

Cordialement.

Bonjour,

Je pense que je n'ai pas été assez clair dans ma question.

Dans le module de feuille "Feuil 1( Feuil1)" je place ce code :

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Bonjour !"
End Sub

Dans le feuil1 je rentre en mode édition de la cellule A1 (double click...).

Cas 1 : Je sors de la cellule en cliquant sur la cellule B2 de la feuil 1 : le message s'affiche.

Cas 2 : Je sors de la cellule en cliquant sur la cellule B2 de la feuil 2 : le message s'affiche.

Or dans le deuxième cas, je souhaiterais que le message n'apparaisse pas car on est sur une autre feuille.

Mais pour autant je comprend qu'excel veuille déclencher cette macro car on sort bien de la cellule A1 présente sur la feuil 1.

Existe-t-il un moyen pour que la macro ne se déclenche pas dans le cas 2 s'il vous plait ?

Bonjour Damiani, Bonjour MFerrand

Avec:

Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Name = Me.Name Then MsgBox "Bonjour !"
End Sub

Cordialement

Bonjour à tous,

Tu as le moyen... ! (merci à Efgé) Mettre sous condition le déclenchement. On le fait d'ailleurs habituellement pour que le déclenchement n'insterviennent que pour certaines plages...

Ceci dit, c'est tout de même un peu vicieux de ne pas valider une saisie ou une édition de la cellule dans la feuille, et d'en sortir en passant sur une autre feuille avant validation ! Je n'aurais jamais pensé à faire comme ça, sauf involontairement.

Cordialement.

Bonne journée.

En fait MFerrand ça arrive quand on entre dans une cellule pour copier un texte et qu'on veut coller ce texte dans une autre cellule sur une autre feuille. On peut se débrouiller autrement mais quand la feuille doit être utilisée par d'autres utilisateurs il faut mieux sécuriser la chose .

J'ai mis ce code au début de ma macro et ça semble bien fonctionner :

If ActiveSheet.Name <> Me.Name Then Exit Sub

Je vous remercie pour votre aide.

La copie ne déclenche pas l'évènement !

Ce n'est pas un changement...

sauf si on rentre dans la cellule en double cliquant dessus et qu'on copie le texte ensuite, au lieu de copier le texte via un click droit.

Ce n'est jamais obligé, même si on ne veut copier qu'une partie du contenu : on le fait dans la barre de formule, c'est plus rapide.

Et la copie normale ne nécessite pas d'éditer la cellule.

Cela fait partie de l'apprentissage d'Excel, ces manipulations de base.

Je ne suis pas en désaccord avec toi, j'ai moi-même été surpris par ce comportement Mais je préfère mettre une petite "barrière" dans le code en plus de dire aux utilisateurs qu'il est préférable de faire autrement.

Rechercher des sujets similaires à "pas activer worksheet change feuille"