OVH Cloud OVH Cloud

Arret macro via bouton

1 réponse
Avatar
Phil
Bonjour =E0 tous,

J'aimerais savoir si c'est possible:
J'ai une macro =E9v=E8nementielle "toto" qui se lance =E0=20
l'ouverture d'un userform (il est mis =E0 jour au fur et =E0=20
mesure de l'avancement de la macro).
En gros dans "toto", il y a une boucle qui peut selon les=20
cas tourner tr=E8s tr=E8s longtemps!
J'aimerais savoir si on pouvait mettre sur le formulaire=20
un bouton "Arr=EAter" qui termine l'execution de la=20
macro "toto".
En fait l'effet doit =EAtre le m=EAme que Ctrl+Attn puis click=20
sur "fin".
P.S.: pour le bouton j'ai pas de probl=E8me mais c'est pour=20
le code associ=E9! J'ai d=E9j=E0 cherch=E9 dans l'aide sans succ=E8s.

Merci d'avance pour une =E9ventuelle piste...

1 réponse

Avatar
michdenis
Bonjour Phil,


Dans le haut de ton formulaire, déclare une variable

Dim Ok as Boolean


Dans ta procédure qui est longue à exécuter, place en début de procédure :
Ok = False

Et à des endroits stratégiques de ton code (qui requiert un temps d'exécution longuet comme une boucle), les 2 lignes de code
suivantes : à titre d'exemple :
'------------------
For a= 1 to X
DoEvents
if ok = true then Exit sub

' Le reste du code de ta boucle

Next
'------------------


Attache cette macro à un bouton de ton formulaire
'Cette macro doit être dans le module de ton formulaire

Lorsque tu cliqueras sur le bouton , tu feras arrêter ta procédure en exécution.
'------------------
Sub ArrêtMacro()
Ok= True
End Sub
'------------------


Salutations!



"Phil" a écrit dans le message de news:09e501c3c630$bf034be0$
Bonjour à tous,

J'aimerais savoir si c'est possible:
J'ai une macro évènementielle "toto" qui se lance à
l'ouverture d'un userform (il est mis à jour au fur et à
mesure de l'avancement de la macro).
En gros dans "toto", il y a une boucle qui peut selon les
cas tourner très très longtemps!
J'aimerais savoir si on pouvait mettre sur le formulaire
un bouton "Arrêter" qui termine l'execution de la
macro "toto".
En fait l'effet doit être le même que Ctrl+Attn puis click
sur "fin".
P.S.: pour le bouton j'ai pas de problème mais c'est pour
le code associé! J'ai déjà cherché dans l'aide sans succès.

Merci d'avance pour une éventuelle piste...