Airone784
XLDnaute Occasionnel
BOnjour,
Voici le code que j'utilise à la fermeture d'un fichier :
Concrètement, lorsque je clique sur oui à la question MsgBox("Voulez-vous sauvegarder les changements apportés au fichier ?, le fichier s'enregistre, je créé une sauvegarde qui dépend de la date renseignée en cellule BE1 (save as) puis se ferme. Vous remarquerez que si je créé une sauvegarde et qu'il en existe déjà une à la même date que celle en cellule BE1, je procède à la suppression de la sauvegarde d'abord (kill...) puis j'enregistre le fichier Plan et créé une sauvegarde dans un répertoire défini.
Si je clique sur non à la question MsgBox("Voulez-vous sauvegarder les changements apportés au fichier ? je souhaite que le fichier se ferme sans s'enregistrer et sans créer de sauvegarde sauf que quand je clique sur non dans ma msgbox, mon code beforeclose repart du début et du coup j'ai une seconde fois la question issue de ma msgbox qui s'affiche. Si je clique de nouveau sur non mon classeur se ferme sans sauvegarde. C'est bien sauf que je ne veux pas avoir à répondre 2 fois à cette question???
J'espère que mes explications sont claires et que allez pouvoir me donner un coup de pouce ce serait super.
Merci d'avance.
Voici le code que j'utilise à la fermeture d'un fichier :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim nom As String, dateprep As Variant
On Error Resume Next
Application.DisplayAlerts = False
Application.EnableEvents = False
If MsgBox("Voulez-vous sauvegarder les changements apportés au fichier ?", vbQuestion + vbYesNo, "Sauvegarde modifications") = vbYes Then
dateprep = Sheets("PLAN").Range("BE1").Value
If dateprep <> 0 Then
nom = Format(dateprep, "yyyymmdd") & " Plan du " & Format(dateprep, "dddd dd mmmm yyyy") & ".xlsm"
jour = Format(dateprep, "yyyymmdd")
fichier = Dir("C:\Users\Plan\" & jour & "*")
If ActiveWorkbook.Name = "Plan.xlsm" Then
While Mid(fichier, 1, 8) = Mid(jour, 1, 8)
Kill ("C:\Users\Plan\" & Mid(fichier, 1, 8) & "*")
fichier = Dir("C:\Users\Plan\" & jour & "*")
Wend
Application.ActiveWorkbook.save
ActiveWorkbook.SaveAs "C:\Users\Plan\" & nom
End If
Application.DisplayAlerts = True
Application.EnableEvents = True
Else
MsgBox "Vous devez préciser la date pour sauvegarder votre plan !" & vbLf & _
"Pour se faire, dans l'onglet options, cliquez sur le bouton." _
, vbInformation, "Date non renseignée"
Cancel = True
End If
Else
Cancel = True
ThisWorkbook.Close
End If
End Sub
Concrètement, lorsque je clique sur oui à la question MsgBox("Voulez-vous sauvegarder les changements apportés au fichier ?, le fichier s'enregistre, je créé une sauvegarde qui dépend de la date renseignée en cellule BE1 (save as) puis se ferme. Vous remarquerez que si je créé une sauvegarde et qu'il en existe déjà une à la même date que celle en cellule BE1, je procède à la suppression de la sauvegarde d'abord (kill...) puis j'enregistre le fichier Plan et créé une sauvegarde dans un répertoire défini.
Si je clique sur non à la question MsgBox("Voulez-vous sauvegarder les changements apportés au fichier ? je souhaite que le fichier se ferme sans s'enregistrer et sans créer de sauvegarde sauf que quand je clique sur non dans ma msgbox, mon code beforeclose repart du début et du coup j'ai une seconde fois la question issue de ma msgbox qui s'affiche. Si je clique de nouveau sur non mon classeur se ferme sans sauvegarde. C'est bien sauf que je ne veux pas avoir à répondre 2 fois à cette question???
J'espère que mes explications sont claires et que allez pouvoir me donner un coup de pouce ce serait super.
Merci d'avance.