Voici un code détaillé en VBA(Visual Basic for Applications) dans Excel, qui automatise le processus de sauvegarde et de récupération des données d’un classeur. Ce code peut être utilisé pour créer une copie de sauvegarde de votre fichier Excel et pour restaurer des données à partir de cette sauvegarde.
Objectifs :
1. Sauvegarde automatique des données : Enregistrer une copie du fichier à un emplacement spécifique avec un horodatage dans le nom du fichier.
2. Récupération des données : Charger la sauvegarde précédente dans le fichier actuel.
Explication et Code VBA
Étape 1 : Ouverture de l’Éditeur VBA
- Ouvrez Excel.
- Allez dans l’onglet Développeur (si vous ne l’avez pas déjà, vous pouvez l’activer dans les paramètres Excel).
- Cliquez sur Visual Basic pour ouvrir l’éditeur VBA.
- Dans l’éditeur VBA, cliquez sur Insertion puis sur Module pour ajouter un module vierge.
Étape 2 : Code VBA pour la Sauvegarde et la Récupération
Sub SauvegarderClasseur() ' Variables pour le chemin et le nom de la sauvegarde Dim cheminSauvegarde As String Dim nomFichier As String Dim dateHeure As String ' Définir le chemin de sauvegarde - Vous pouvez le personnaliser cheminSauvegarde = "C:\Backup\" ' Spécifiez le chemin de sauvegarde, ajustez si nécessaire ' Créer un nom unique pour la sauvegarde basé sur la date et l'heure actuelle dateHeure = Format(Now(), "yyyy-mm-dd_hh-mm-ss") nomFichier = "Sauvegarde_" & dateHeure & ".xlsm" ' Changez l'extension si nécessaire (par ex., .xlsx pour fichiers sans macros) ' Enregistrer une copie du classeur ThisWorkbook.SaveCopyAs cheminSauvegarde & nomFichier ' Afficher un message de confirmation MsgBox "La sauvegarde a été effectuée avec succès ! Le fichier a été enregistré sous : " & cheminSauvegarde & nomFichier, vbInformation End Sub
Sub RecupererSauvegarde() ' Variables pour le chemin et le nom de la sauvegarde Dim cheminSauvegarde As String Dim nomFichier As String Dim fichier As Variant ' Définir le chemin de sauvegarde - Vous pouvez le personnaliser cheminSauvegarde = "C:\Backup\" ' Spécifiez le chemin de sauvegarde ' Demander à l'utilisateur de sélectionner le fichier de sauvegarde à restaurer fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsm), *.xlsm", , "Sélectionner la sauvegarde") ' Vérifier si un fichier a été sélectionné If fichier <> "False" Then ' Ouvrir le fichier de sauvegarde et copier les données dans le classeur actif Workbooks.Open fichier ' Par exemple, copier tout le contenu de la première feuille ' Vous pouvez ajuster cette ligne pour copier les données spécifiques dont vous avez besoin ThisWorkbook.Sheets(1).Cells.Clear ' Effacer les anciennes données ActiveSheet.UsedRange.Copy Destination:=ThisWorkbook.Sheets(1).Range("A1") ' Fermer la sauvegarde Workbooks(Dir(fichier)).Close SaveChanges:=False ' Afficher un message de confirmation MsgBox "La récupération des données a été effectuée avec succès !", vbInformation Else ' Si l'utilisateur annule l'action de sélection de fichier MsgBox "Aucun fichier de sauvegarde sélectionné.", vbExclamation End If End Sub
Explications détaillées
1. Fonction de Sauvegarde (SauvegarderClasseur)
- Variables :
- cheminSauvegarde définit le répertoire où les fichiers de sauvegarde seront enregistrés.
- nomFichier contient le nom du fichier de sauvegarde, qui est basé sur la date et l’heure actuelles pour garantir l’unicité.
- Format de la date : Format(Now(), « yyyy-mm-dd_hh-mm-ss ») permet d’ajouter la date et l’heure actuelles dans le nom du fichier.
- Sauvegarde : ThisWorkbook.SaveCopyAs cheminSauvegarde & nomFichier crée une copie du classeur actif et l’enregistre à l’emplacement spécifié.
2. Fonction de Récupération (RecupererSauvegarde)
- Demander à l’utilisateur de sélectionner un fichier :
- Application.GetOpenFilename ouvre une boîte de dialogue pour que l’utilisateur sélectionne un fichier de sauvegarde à restaurer.
- Copier les données :
- Si un fichier est sélectionné, le code ouvre ce fichier, puis copie son contenu dans le classeur actif. Ici, ActiveSheet.UsedRange.Copy Destination:=ThisWorkbook.Sheets(1).Range(« A1 ») copie toutes les données de la première feuille du fichier de sauvegarde dans la première feuille du classeur actuel.
- Fermeture du fichier de sauvegarde : Après la récupération des données, le fichier de sauvegarde est fermé sans enregistrer de modifications supplémentaires.
Étape 3 : Test du Code
1. Pour la sauvegarde : Allez dans l’éditeur VBA, placez le curseur dans la fonction SauvegarderClasseur et appuyez sur F5 pour exécuter le code et sauvegarder le fichier.
2. Pour la récupération : De même, placez le curseur dans la fonction RecupererSauvegarde et appuyez sur F5 pour restaurer les données à partir d’une sauvegarde existante.
Personnalisation
- Vous pouvez personnaliser le chemin de sauvegarde en modifiant la variable cheminSauvegarde.
- Vous pouvez ajuster le processus de récupération pour ne copier que certaines données spécifiques au lieu de tout le contenu.
Ce code fournit une solution simple pour automatiser les sauvegardes régulières et la récupération des données dans Excel en utilisant VBA.