Excel :Intercepter un évènement pendant une macro

Bonjour,

Je vous soumet la situation :

L’appui sur un bouton activeX d’une feuille Excel2013 lance par MouseDown une macro qui s’auto-appelle. L’objectif est de quitter la boucle en relâchant le bouton (MouseUp).

Public Dégage as boolean (étant éclaré en-tête du module standard, la macro qui boucle contient la séquence :

...

Dégage = False :

DoEvents :

If Dégage then Exit Sub

...

Le code de MouseUp dans la feuille travail contient la seule instruction

Dégage = True

Ce qui coince :

MouseUp ne s’exécute pas pendant que la macro boucle et/ou ne se met pas en file d’attente système, donc DoEvents n’intercepte rien. Pas de sortie de la boucle ! Y a-t-il une stratégie pour intercepter le relâchement du bouton pendant la macro?

Antisèche bienvenu

Re-Bonjour

J’ai finalement trouvé une solution en attendant mieux

Plus besoin de procédure MouseUp et voici le code de sortie de la boucle de défilement continu

Declare PtrSafe Function GetInputState Lib "user32" () As Long

Public Sub Défilement()

--------------- (code travail et affichage)

DoEvents 'pour rafraichir l’écran à chaque boucle

For I = 1 To 100000000: Next 'temporisat°/ vitesse défilement (résultats curieux svt valeurs ! )

If GetInputState <> 0 Then Exit Sub 'getinputstate détecte relâche bouton (= 0 si pas d'action)

Défilement ‘auto rappel en boucle

Effet : Le défilement du travail commence quand on appui le bouton et cesse quand on le relâche

Note : La temporisation I est nécessaire pour rafraîchir l’écran à chaque pas du défilement et je pense pour laisser aussi le temps d’intercepter la relâche du bouton, car je constate que cette interception n’est pas toujours fiable (particulièrement si le temps d’appui est très bref comme un simple clic ; des re-clics sont parfois nécessaires ! et la temporisation a une influence)

Je suis toujours preneur d'une meilleure soluce

Rechercher des sujets similaires à "intercepter evenement macro"