Est-il possible de retarder l'évènement "WorkBook_SheetChange" ???

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

SERIEUXETCOOL

XLDnaute Occasionnel
Bonsoir le Forum,

J'ai une petite question...J'ai un classeur Excel qui contient un module, mais également un évènement "WorkBook_SheetChange" situé dans "ThisWorkBook".

Quand je lance ma macro cet évènement se lance également automatiquement (logique). Or moi j'aimerais que cet évènement ne se déclenche qu'une fois le code du module exécuté entièrement. Quand la macro à finit de s’exécuter en quelque sorte.
Est il possible de faire déclencher cet évènement sous conditions, ou de lui mettre un "wait" ou je ne sais quoi d'autre ???

Je ne sais pas si ma question est claire, et je ne sais pas non plus si c'est envisageable.

Dans tous les cas, je prends vos conseils.

Bien cordialement,

André
 
Re : Est-il possible de retarder l'évènement "WorkBook_SheetChange" ???

Je pensais faire un compteur qui "bloque" l'évènement "WorkBook_SheetChange" tant que ce compteur n'ai pas atteint une valeur particulière. Mais je parviens seulement à bloquer complètement l'évènement avec le code suivant.

Code:
While i < 11
Exit Sub
Wend

En effet, i reste tjs plus petit que 100 et je ne sais pas comment interrompre tout sa.

Sinon, autre solution, je me demandais si avec une variable public qui changerait d'état uniquement à la fin de la Macro sa ne marcherait pas ?

Un truc du genre :

Code:
Public Variable FINI
While FINI = False
Exit Sub
Wend

Je vais essayer ces deux idées en attendant mieux de votre part, je l'espère.

André
 
Re : Est-il possible de retarder l'évènement "WorkBook_SheetChange" ???

Bonsoir
Pas d'autre solution que
Application.EnableEvents = False
Pour qu'il ne s'exécute pas du tout.
Éventuellement (c'est le cas de le dire) la procédure WorkBook_SheetChange de ThisWorkBook pourrait être mise Public au lieu de Private pour pouvoir l'invoquer comme une procédure ordinaire au moment opportun.

P.S. Je n'ai jamais vu un seul cas où le fait que Application.EnableEvents soit à True pendant les exécutions soit autre chose qu'une source de problème. J'ai même quelque part un cas ou je suis obligé de le mettre False avant de sélectionner une cellule, puis d'appeler quand même moi même la WorkSheet_SelectionChange. Parce c'est ce qui y est exécuté qui m'intéresse, or ce n'est pas exécuté si la cellule en question ...est déjà sélectionnée !
À +
 
Dernière édition:
Re : Est-il possible de retarder l'évènement "WorkBook_SheetChange" ???

Dranreb sa m'intéresse ce que tu disais à propos de mettre la procédure WorkBook_SheetChange de ThisWorkBook Public au lieu de Private.

Sa vaut le coup que je teste. Pourrais tu m'en dire un peu plus...

-Cette fonction public se place dans un module ou dans "ThisWorkBook" ?

-J’imagine que j'appellerais cette procédure une seule fois à la toute fin de mon programme. Mais comment faire appel à cette procédure par la suite ? Un exemple de syntaxe si possible.

Je vais chercher sur le net un peu entre temps.

Sinon que pense tu de mon idée de mettre une variable public qui ferait déclencher l'évènement une seule fois également à la fin de la macro dès lors que cette variable change d'état ? Réalise ou pas du tout ?

J'ai pas testé encore....

Merci en tout cas de cette idée intéressante.
 
Re : Est-il possible de retarder l'évènement "WorkBook_SheetChange" ???

Ayé j'y suis arrivé.

J'ai utilisé la méthode de la variable publique. Très facile à mettre en oeuvre et surtout qui marche au top.

Merci à toi Habitude pour m'avoir guider avec ton exemple. C'est sympa.

Merci aussi à toi Dranreb pour ta solution. Mais je n'ai pas eu suffisamment d'éléments pour la mettre en pratique.

A tous je vous souhaite une bonne soirée.

Encore merci.

André
 
Re : Est-il possible de retarder l'évènement "WorkBook_SheetChange" ???

Oui, enfin la plupart du temps il n'est pas nécessaire de recourir à un Boolean Public pour que la procédure évènement soit exécutée pour rien, en somme. Il y a déjà quelque chose qui est justement fait pour ça :
Une procédure évènement n'est pas exécutée du tout si on place devant l'opération qui l'aurait provoquée :
VB:
Application.EnableEvents = False
Le remettre à True juste derrière.
À+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

P
Réponses
3
Affichages
867
PhilMarc
P
B
Réponses
4
Affichages
1 K
B
M
Réponses
1
Affichages
1 K
Max60150
M
C
Réponses
1
Affichages
2 K
corloste
C
T
Réponses
2
Affichages
1 K
T
Retour