Empècher la fermeture d'excel pendant l'exéution d'une macro

Résolu
lerian01 Messages postés 8 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 21 août 2010 - 6 janv. 2008 à 10:18
lerian01 Messages postés 8 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 21 août 2010 - 6 janv. 2008 à 21:05
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 janv. 2008 à 12:22
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
3
lerian01 Messages postés 8 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 21 août 2010
6 janv. 2008 à 12:37
Merci !
Je pense que le code sur codyx fera mon bonheur.

Yannick
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
6 janv. 2008 à 17:29
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.
0
lerian01 Messages postés 8 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 21 août 2010
6 janv. 2008 à 21:05
Oui, merci.


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


C'est clair :)

Yannick
0
Rejoignez-nous