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

Messages postés
8
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
21 août 2010
- - Dernière réponse : 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
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
8
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
21 août 2010
0
Merci
Merci !
Je pense que le code sur codyx fera mon bonheur.

Yannick
Commenter la réponse de lerian01
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7
0
Merci
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.
Commenter la réponse de us_30
Messages postés
8
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
21 août 2010
0
Merci
Oui, merci.


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


C'est clair :)

Yannick
Commenter la réponse de lerian01