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.
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.
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
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
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
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 !!!
Exemple : Il ne partent de chez eux en laissant la porte ouverte et bien ici c'est pareil....
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
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