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

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

Répondre au sujet
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 6 janv. 2008 à 12:22
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
lerian01 8 Messages postés lundi 27 novembre 2006Date d'inscription 21 août 2010 Dernière intervention - 6 janv. 2008 à 12:37
0
Utile
Merci !
Je pense que le code sur codyx fera mon bonheur.

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


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


C'est clair :)

Yannick
Commenter la réponse de lerian01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.