Empècher la fermeture d'excel pendant l'exéution d'une macro [Résolu]

Signaler
Messages postés
8
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
21 août 2010
-
Messages postés
8
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
21 août 2010
-
Bonjour

Ma macro VBA charge à un moment de son exécution un gros fichier texte depuis le disque dur.
J'ai créé une barre de progression avec un UserForm qui montre où en est le traitement.
Cette barre est affichée avec la propriété "Show Modal = False", autrement elle stopperait l'exécution du code VBA.

J'aimerai empècher que excel puisse être fermé pendant cette phase. Quelqu'un a t'il une idée ?
Merci pour votre aide.

Yannick

4 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,
excel complet je ne sais pas, à part en grisant le bouton fermer mais on pourrait toujours killer le processus.
si c'est bien çà que tu veux, il y a le code correspondant sur www.codyx.org

sinon juste le formulaire, dans l'évènement unload_query tu fais le test si CHARGEMENT_EN_COURS => cancel=true

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
8
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
21 août 2010

Merci !
Je pense que le code sur codyx fera mon bonheur.

Yannick
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonjour,

En complément, comme le dit PCPT, pour une Userform, on utilise l'événement _QueryClose, et met Cancel à True. Soit le code suivant :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)If MsgBox("voulez-vous fermer l'userform ?", vbYesNo) vbNo Then Cancel True
End Sub

Pour un classeur, on procède de la même manière mais avec ThisWorkbook on utilise l'événement _BeforeClose. Soit le code suivant :

Private Sub Workbook_BeforeClose(Cancel As Boolean)If MsgBox("voulez-vous fermer le classeur / Excel ?", vbYesNo) vbNo Then Cancel True
End Sub

Et par de conséquence, le code précédent se déclenche aussi quand on ferme Excel, et donc empêche aussi Excel de se fermer...

Amicalement,
Us.
Messages postés
8
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
21 août 2010

Oui, merci.


J'ai découvert ceci à partir des indications de PCPT.


C'est clair :)

Yannick