Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Sauvegarde automatique

Philippe17

XLDnaute Occasionnel
Supporter XLD
Bonsoir à tous,

J'ai copié un bout de code VBA dans « ThisWorkbook » quand je ferme mon classeur, il me crée une sauvegarde automatiquement dans mes documents, à la fermeture. Il me prévient par message Box que la sauvegarde va s'effectuer, je n'ai que OK pour valider, possible d'avoir un message Box pour confirmer par « oui ou non ” ?

Merci pour votre aide,

Philippe
 

Pièces jointes

  • testfermer2.xlsm
    15.9 KB · Affichages: 3
Solution
VB:
Private Sub workbook_beforeclose(cancel As Boolean)
' Déclaration des variables
    Dim Nomdossier$, NonFichier$, Rep As VbMsgBoxResult
    ' Affectation des variables
    Nomdossier = "C:\Users\vrign\Documents\"
    ' Désactive les messages d'alertes
    Application.DisplayAlerts = False
    'on crée le nom du fichier de sauvegarde 'Date + Nom)
    NomFichier = Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "_" & "Sauvegarde.xlsm"
     ' On affiche un message de demande d'enregistrement
    Rep = MsgBox("Votre Fichier de sauvegarde intitulé : " & NomFichier & vbNewLine & _
                 "dans le dossier suivant : " & Nomdossier, vbYesNo + vbinforlation, "CONFIRMATION")
    If Rep = vbYes Then
     ' On sauvegarde le fichier...

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir Philippe17


A modifier dans le MsgBox:

VB:
"dans le dossier suivant : " & Nomdossier, vbYesNoCancel + vbInformation, "CONFIRMATION"

Bonne fin de ouikand
@+ Eric c
 

Eric C

XLDnaute Barbatruc
Re,

Essaie avec ceci (à paufiner).
VB:
Private Sub workbook_beforeclose(cancel As Boolean)

    ' Déclaration des variables
    Dim Nomdossier As String
    Dim NonFichier As String
Dim rep As Variant

    ' Affectation des variables
    Nomdossier = "C:\a\A effacer\"
    ' Désactive les messages d'alertes
   ' Application.DisplayAlerts = False
    'on crée le nom du fichier de sauvegarde 'Date + Nom)
    NomFichier = Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "_" & "Sauvegarde2.xlsm"
    ' On sauvegarde le fichier de backup
    ' On affiche un message de confirmation
 rep = MsgBox("Enregistrement de votre fichier de sauvegarde", vbOKCancel, "CONFIRMATION")
If rep = vbCancel Then
Exit Sub
Else
       ActiveWorkbook.SaveCopyAs Nomdossier & NomFichier
    
  '  MsgBox "Enregistrement de votre fichier de sauvegarde intitulé : " & NomFichier & vbNewLine & _
   '          "dans le dossier suivant : " & Nomdossier + vbinforlation, "CONFIRMATION"

End If
End Sub
@+ Eric c
 

patricktoulon

XLDnaute Barbatruc
VB:
Private Sub workbook_beforeclose(cancel As Boolean)
' Déclaration des variables
    Dim Nomdossier$, NonFichier$, Rep As VbMsgBoxResult
    ' Affectation des variables
    Nomdossier = "C:\Users\vrign\Documents\"
    ' Désactive les messages d'alertes
    Application.DisplayAlerts = False
    'on crée le nom du fichier de sauvegarde 'Date + Nom)
    NomFichier = Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "_" & "Sauvegarde.xlsm"
     ' On affiche un message de demande d'enregistrement
    Rep = MsgBox("Votre Fichier de sauvegarde intitulé : " & NomFichier & vbNewLine & _
                 "dans le dossier suivant : " & Nomdossier, vbYesNo + vbinforlation, "CONFIRMATION")
    If Rep = vbYes Then
     ' On sauvegarde le fichier de backup
      ActiveWorkbook.SaveCopyAs Nomdossier & NomFichier
    Else
        MsgBox "Annulation de l'enregistrement "
    End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[Pour infos]
Sinon Excel sait faire cela tout seul, sans VBA

Et comme tu utilises 365 tu peux aussi faire une sauvegarde sur OneDrive.

Mais on peut préférer voir s'afficher une MsgBox et devoir cliquer sur Oui ou Non
 

Philippe17

XLDnaute Occasionnel
Supporter XLD
Bonjour, je vous remercie tous et merci patricktoulon,
La solution de patricktoulon me plais beaucoup et c'est bien ce que je voulais, je viens de m'apercevoir que si je pouvais enregistrer plusieurs sauvegardes, ce serait génial ! croyais vous que ce soit possible,
exemple : 21_04_2024_10h20_Sauvegarde.xlsm & 21_04_2024_10h25-Sauvegarde.xlsm et ainsi de suite !

Bon dimanche à vous tous,

Philippe
 

Eric C

XLDnaute Barbatruc
Re le forum
Re le fil, bonjour staple1600

Je te propose en reprenant le fichier de notre ami Patrick..... Oupsssss... (que je salue au passage) :
VB:
Private Sub workbook_beforeclose(cancel As Boolean)

   Dim Nomdossier$, NomFichier$, Rep As VbMsgBoxResult
    ' Affectation des variables
    Nomdossier = "C:\a\A effacer\"
    ' Désactive les messages d'alertes
  '  Application.DisplayAlerts = False
    'on crée le nom du fichier de sauvegarde 'Date + Nom)
    NomFichier = Format(Date, "dd-mm-yy") & " " & "à" & " " & Format(Time, "h- mm") & "-" & "Sauvegarde" & ".xlsm"
     ' On affiche un message de demande d'enregistrement
    Rep = MsgBox("Votre Fichier de sauvegarde intitulé : " & NomFichier & vbNewLine & _
                 "dans le dossier suivant : " & Nomdossier, vbYesNo + vbinforlation, "CONFIRMATION")
    If Rep = vbYes Then
     ' On sauvegarde le fichier de backup
      ActiveWorkbook.SaveCopyAs Nomdossier & NomFichier
    Else
        MsgBox "Annulation de l'enregistrement "
    End If
End Sub
@+ Eric c
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
391
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…