XL 2016 Code vba: Arrêter l'exécution d'une macro en cours avec condition

lorenzo74

XLDnaute Nouveau
Bonjour,

Je recherche en vba le code pour arrêter l'exécution d'une macro en cours.
Si macro 1 est en cours d'exécution --> arrêter la macro, si macro 1 n'est pas en cours d'exécution ne rien faire.

Je vous en remercie.
Cordialement
Lorenzo
 

lorenzo74

XLDnaute Nouveau
Bonjour,

C'est la macro en cours qui doit s'assurer que la condition pour continuer est remplie.

Bonsoir,

Afin d'être plus explicite dans ma demande.
Il arrive que des utilisateurs oublient de fermer le fichier excel.
Je programme alors une fermeture automatique du fichier sans enregistrement à 20:58, cela fonctionne bien sauf quand j'ai une boîte de dialogue en cours d'exécution.

Ci-joint en exemple une partie de mon fichier.

Cordialement
Lorenzo
 

Pièces jointes

  • arrêt.xlsm
    24.5 KB · Affichages: 33

lorenzo74

XLDnaute Nouveau
Bonjour Lorenzo, Patrice, le forum

VB:
Sub QuitterOUSauvegarder()
ActiveWorkbook.Close True ' ou False si on ne veut pas enregistrer
'Application.Quit 'Atttention Sort totalement d'excel si on active la ligne
End Sub

@Phil69970

Bonjour,

J'avais déjà essayé votre code, mais cela ne fonctionne pas si la boîte de dialogue de la feuille D3 est en cours d'exécution.

J'exécute le code suivant à l'ouverture du workbook
VB:
Sub Workbook_Open()
Application.OnTime TimeValue("21:58:00"), "Fermeture"
End Sub

J'ai essayé d'envoyer la commande suivante dans votre macro de fermeture pour arrêter l'exécution de la boîte de dialogue si elle est en cours d'exécution, mais cela ne fonctionne pas non plus
VB:
SendKeys "{ESC}"
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour Lorenzo, Patrice, le forum

Essaye cela mais je suis pas convaincu du tout que cela agisse sur une boite déjà ouverte.
application.displayAlerts= false

Si je comprends bien les utilisateurs partent en laissant une boite de dialogue ouverte !
Peut être une éducation à revoir !!! :oops:
Exemple : Il ne partent de chez eux en laissant la porte ouverte et bien ici c'est pareil....

@Phil69970
 

Phil69970

XLDnaute Barbatruc
Bonjour Soan

C'est sympa aussi l'auberge espagnole !;);)

*Autrement peut être "à la bourrin" (vu que tu n'enregistre pas le fichier)
en fermant le pc en force genre :
VB:
Set w=CreateObject("WScript.Shell")
go=w.run("cmd.exe /c shutdown -f", 0, true)
fermeture automatique du fichier sans enregistrement

Mais les utilisateurs ne vont peut être pas aimer du tout.....

@Phil69970
 

Eric-40

XLDnaute Nouveau
il faut mettre une variable boolénne en global (Par exemple"EnCours")
l'initialiser au lancement de la macro : EnCours=True
Puis boucler sur un While EnCours ... Loop
Il suffit de mettre EnCours à false pour arrêter la macro, que ce soit par l'appui sur un bouton ou dans une autre procédure ou avec un OnTime
 

Eric-40

XLDnaute Nouveau
il faut mettre une variable boolénne en global (Par exemple"EnCours")
l'initialiser au lancement de la macro : EnCours=True
Puis boucler sur un While EnCours ... Loop
Il suffit de mettre EnCours à false pour arrêter la macro, que ce soit par l'appui sur un bouton ou dans une autre procédure ou avec un OnTime
 

Discussions similaires

Réponses
9
Affichages
268
Réponses
12
Affichages
210

Statistiques des forums

Discussions
314 630
Messages
2 111 369
Membres
111 115
dernier inscrit
mermo