homerlehamster
XLDnaute Nouveau
Bonjour,
J’ai un petit problème. Je dois faire une macro de fermeture de fichier Excel, selon les instructions suivantes :
Fermeture du fichier Section :
Demande Confirmation de fermeture
Non : Arrête la fermeture.
Oui :
o Garder comme dans la version en cours la question de l’Export,
Oui :
Lance la fonction Export.
Export OK
Demander si veux enregistrer les MàJ de Section et Eff.
Oui
Enregistre et ferme Effectifs (si ouvert)
Enregistre et ferme Section
Non
Ferme effectifs sans enregistrer (Si ouvert)
Ferme Section Sans enregistrer
Ferme Proba (Si ouvert)
Export OK
Arrête la fermeture.
Non :
Demander si veux enregistrer les MàJ de Section et Eff.
Oui
Enregistre et ferme Effectifs (si ouvert)
Enregistre et ferme Section
Non
Ferme effectifs sans enregistrer (Si ouvert)
Ferme Section Sans enregistrer
Ferme Proba (Si ouvert)
J’ai pu tout faire, le seul obstacle qu’il me reste à surmonter est celui de la première instruction : « demande de confirmation de fermeture : « non » ----> arrête la fermeture ». Je m’explique : j’ai fait une procédure « Workbook_BeforeClose » :
Le problème vient du fait qu’en cliquant sur « la croix de fermeture » du fichier Sec, Excel me pose une premiere fois la question "Do you really want to close " & VarSecFile & "?", je clique sur « oui », puis quand j’arrive à la question « "Do you want to save the modification of " & VarSecFile & " & " & VarEffFile & « ? » , Excel étant appelé une seconde fois à fermer le fichier Sec (à cause de l’instruction « Workbooks(VarSecFile).Close SaveChanges:=True/false) , il recommence la procédure « workbook_beforeclose » du fichier Sec, et donc me repose logiquement la question "Do you really want to close " & VarSecFile & "?".
Je ne sais pas trop quoi faire pour éviter qu’Excel me pose à nouveau cette question "Do you really want to close " & VarSecFile & "?", au début j’utilisais une procédure de type « auto_close », le problème c’est que le « Cancel = true » ne fonctionne pas dans les procédures de type « auto_close », en cas d’annulation de fermeture du fichier.
Je ne sais pas si j’ai été très clair, mais merci d’avance à ceux qui me donneront un coup de main.
J’ai un petit problème. Je dois faire une macro de fermeture de fichier Excel, selon les instructions suivantes :
Fermeture du fichier Section :
Demande Confirmation de fermeture
Non : Arrête la fermeture.
Oui :
o Garder comme dans la version en cours la question de l’Export,
Oui :
Lance la fonction Export.
Export OK
Demander si veux enregistrer les MàJ de Section et Eff.
Oui
Enregistre et ferme Effectifs (si ouvert)
Enregistre et ferme Section
Non
Ferme effectifs sans enregistrer (Si ouvert)
Ferme Section Sans enregistrer
Ferme Proba (Si ouvert)
Export OK
Arrête la fermeture.
Non :
Demander si veux enregistrer les MàJ de Section et Eff.
Oui
Enregistre et ferme Effectifs (si ouvert)
Enregistre et ferme Section
Non
Ferme effectifs sans enregistrer (Si ouvert)
Ferme Section Sans enregistrer
Ferme Proba (Si ouvert)
J’ai pu tout faire, le seul obstacle qu’il me reste à surmonter est celui de la première instruction : « demande de confirmation de fermeture : « non » ----> arrête la fermeture ». Je m’explique : j’ai fait une procédure « Workbook_BeforeClose » :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If VarSecFile = "" Then
VarSecFile = ActiveWorkbook.Name 'on récupère le nom de SecASGXX.xls sous forme de chaîne
VarEffFile = Replace(VarSecFile, "Sec", "Eff") 'on remplace "Sec" par "Eff" dans la chaîne "SecASGXX.xls" pr obtenir le nom du fichier Effectif associé à ce fichier Section
End If
Application.DisplayAlerts = False
varMsg = "Do you really want to close " & VarSecFile & "?"
rpns = MsgBox(varMsg, vbQuestion + vbYesNo, cntTitre)
If rpns = vbYes Then
varMsg = "Do you want to EXPORT your data?"
rpns = MsgBox(varMsg, vbQuestion + vbYesNo, cntTitre)
If rpns = vbYes Then
'Call exporter
'flgCmdExport = False
If VarFlagExport = True Then
varMsg = "Do you want to save the modification of " & VarSecFile & " & " & VarEffFile & " files?"
rpns = MsgBox(varMsg, vbQuestion + vbYesNo, cntTitre)
If rpns = vbYes Then
If VerifOuvertureClasseur(VarEffFile) = True Then
Workbooks(VarEffFile).Close SaveChanges:=True
End If
Workbooks(VarSecFile).Close SaveChanges:=True
End If
If rpns = vbNo Then
If VerifOuvertureClasseur(VarEffFile) = True Then
Workbooks(VarEffFile).Close SaveChanges:=False
End If
Workbooks(VarSecFile).Close SaveChanges:=False
If VerifOuvertureClasseur(ConstProbFile) = True Then
Workbooks(ConstProbFile).Close SaveChanges:=False
End If
End If
End If
Else
varMsg = "Do you want to save the modification of " & VarSecFile & " & " & VarEffFile & " files?"
rpns = MsgBox(varMsg, vbQuestion + vbYesNo, cntTitre)
If rpns = vbYes Then
If VerifOuvertureClasseur(VarEffFile) = True Then
Workbooks(VarEffFile).Close SaveChanges:=True
End If
Workbooks(VarSecFile).Close SaveChanges:=True
End If
If rpns = vbNo Then
If VerifOuvertureClasseur(VarEffFile) = True Then
Workbooks(VarEffFile).Close SaveChanges:=False
End If
Workbooks(VarSecFile).Close SaveChanges:=False
If VerifOuvertureClasseur(ConstProbFile) = True Then
Workbooks(ConstProbFile).Close SaveChanges:=False
End If
End If
End If
Else
Cancel = True
End If
'Application.DisplayAlerts = True
End Sub
Le problème vient du fait qu’en cliquant sur « la croix de fermeture » du fichier Sec, Excel me pose une premiere fois la question "Do you really want to close " & VarSecFile & "?", je clique sur « oui », puis quand j’arrive à la question « "Do you want to save the modification of " & VarSecFile & " & " & VarEffFile & « ? » , Excel étant appelé une seconde fois à fermer le fichier Sec (à cause de l’instruction « Workbooks(VarSecFile).Close SaveChanges:=True/false) , il recommence la procédure « workbook_beforeclose » du fichier Sec, et donc me repose logiquement la question "Do you really want to close " & VarSecFile & "?".
Je ne sais pas trop quoi faire pour éviter qu’Excel me pose à nouveau cette question "Do you really want to close " & VarSecFile & "?", au début j’utilisais une procédure de type « auto_close », le problème c’est que le « Cancel = true » ne fonctionne pas dans les procédures de type « auto_close », en cas d’annulation de fermeture du fichier.
Je ne sais pas si j’ai été très clair, mais merci d’avance à ceux qui me donneront un coup de main.