Conflit macro événementielle d'un Addin avec macro événementielle d'un Workbook

JibseNew

XLDnaute Nouveau
Bonjour,

J'ai créé une macro événementielle (SheetSelectionChange) dans un module de classe d'une macro complémentaire (avec le mot clé WithEvents). ça fonctionne bien, mais je voudrais éviter que le même événement déclenche une éventuelle macro événementielle du Workbook actif. Est-ce possible ?
 

Yaloo

XLDnaute Barbatruc
Re : Conflit macro événementielle d'un Addin avec macro événementielle d'un Workbook

Bonsoir JibseNew, le forum,

As-tu essayé Application.EnableEvents = 0 en début de macro et Application.EnableEvents = -1 en fin ?

A+

Martial
 

JibseNew

XLDnaute Nouveau
Re : Conflit macro événementielle d'un Addin avec macro événementielle d'un Workbook

Mon Addin est fait pour fonctionner avec n'importe quel classeur ouvert. Je pourrais par exemple vérifier si le classeur ouvert a une macro événementielle. Je pourrais alors tenter de la neutraliser (en modifiant son code, en ajoutant simplement un exit sub au début de la procédure que j'ôterais à la fin), mais ce serait un peu risqué et surtout ne marcherait qu'avec les classeurs dont le VBAProject n'est pas protégé. Peut-être suggères-tu l'inverse, c'est-à-dire neutraliser la macro événementielle de mon Addin ? Ce serait bien sûr simple et non risqué, mais je perdrais l'intérêt de cette macro de mon Addin (qui par ailleurs est inoffensive pour le classeur) et c'est justement ce que je cherche à éviter.
 

Pierrot93

XLDnaute Barbatruc
Re : Conflit macro événementielle d'un Addin avec macro événementielle d'un Workbook

Bonjour,

Code:
Bien sûr, mais ceci désactive l'événement aussi bien pour la macro du classeur actif que pour celle de l'Addin.

comprends pas trop, car si tu mets "Application.EnableEvents = False" en première instruction de ton événement "selection_change" de ta macro complémentaire, cette procédure continuera à s'exécuter jusqu'à la fin...

bon après midi
@+
 

JibseNew

XLDnaute Nouveau
Re : Conflit macro événementielle d'un Addin avec macro événementielle d'un Workbook

Bonjour Pierrot,

Non, ça ne marche pas, car la macro événementielle du classeur actif capture l'événement SheetSelectionChange avant la macro de l'Addin et, surtout, parce cette dernière a précisément besoin de cet événement pour fonctionner. Je dis surtout, car je ne suis pas sûr que si la macro complémentaire capturait l'événement la première elle pourrait empêcher l'autre de le capturer en ayant un Application.EnableEvents=False sur sa première ligne de code.

Je viens d'ailleurs de constater dans l'autre sens, puisque c'est la macro du WB qui capte la première, qu'en mettant un Application.EnableEvents=False sur sa première ligne on empêchait la macro du Addin de capter l'événement. Mais si (comme on serait bien obligé de le faire si l'on voulait que la macro ne marche pas qu'une fois) on ajoute un Application.EnableEvents=True à la fin, la macro de l'Addin capte l'événement. Donc si celle-ci captait la première, je ne serais pas plus avancé.
 
Dernière édition:

Discussions similaires

Réponses
26
Affichages
379

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 186
dernier inscrit
Eliyass