Automatisez les processus d’archivage des données, Excel VBA
L’automatisation du processus d’archivage des données avec VBA (Visual Basic for Applications) dans Excel peut être utile pour déplacer ou copier des données vers un autre fichier ou une autre feuille de calcul en fonction de critères spécifiques. Voici un exemple de code VBA qui copie les données d’une feuille vers un autre fichier Excel lorsque certaines conditions sont remplies, comme un seuil de date ou un certain statut.
Exemple de code VBA pour automatiser l’archivage des données :
1. Objectif : Copier les lignes d’une feuille Excel vers un autre fichier d’archive en fonction de la date.
2. Supposition : Vous avez une feuille de données (par exemple « Données ») où chaque ligne contient une date dans la colonne A. Si la date est antérieure à la date actuelle moins 30 jours, ces lignes doivent être archivées dans un fichier « Archive.xlsx ».
Sub ArchiverDonnees()
Dim wsSource As Worksheet
Dim wsArchive As Worksheet
Dim lastRow As Long
Dim i As Long
Dim currentDate As Date
Dim filePath As String
Dim archiveWB As Workbook
Dim rowRange As Range
' Définir la feuille source (celle avec les données à archiver)
Set wsSource = ThisWorkbook.Sheets("Données")
' Définir la date actuelle
currentDate = Date
' Définir le chemin et le nom du fichier d'archive
filePath = "C:\Chemin\Vers\Votre\Dossier\Archive.xlsx"
' Ouvrir le fichier d'archive
Set archiveWB = Workbooks.Open(filePath)
' Définir la feuille d'archive dans le fichier
Set wsArchive = archiveWB.Sheets("Archive")
' Trouver la dernière ligne de la feuille source
lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
' Commencer à partir de la ligne 2 (en supposant que la première ligne est un en-tête)
For i = 2 To lastRow
' Vérifier si la date dans la colonne A est plus ancienne que 30 jours
If wsSource.Cells(i, 1).Value < currentDate - 30 Then
' Définir la ligne à archiver
Set rowRange = wsSource.Rows(i)
' Copier la ligne dans la feuille d'archive
rowRange.Copy
' Trouver la première ligne vide dans la feuille d'archive
Dim lastRowArchive As Long
lastRowArchive = wsArchive.Cells(wsArchive.Rows.Count, "A").End(xlUp).Row + 1
' Coller la ligne copiée dans la feuille d'archive
wsArchive.Rows(lastRowArchive).PasteSpecial Paste:=xlPasteValues
' Supprimer la ligne de la feuille source après l'archivage (optionnel)
rowRange.Delete
' Réduire la ligne de 1 pour compenser la suppression
i = i - 1
lastRow = lastRow - 1
End If
Next i
' Sauvegarder et fermer le fichier d'archive
archiveWB.Save
archiveWB.Close
' Informer l'utilisateur que l'archivage est terminé
MsgBox "L'archivage est terminé avec succès!", vbInformation
End Sub
Explication du code :
1. Définition des variables :
- wsSource : Fait référence à la feuille contenant les données que nous voulons archiver.
- wsArchive : Fait référence à la feuille dans le fichier d’archive où les données seront stockées.
- filePath : Spécifie le chemin d’accès au fichier d’archive (veillez à le modifier selon votre situation).
2. Ouverture du fichier d’archive :
- Le fichier « Archive.xlsx » est ouvert en utilisant Workbooks.Open et la feuille où les données seront stockées est définie.
3. Boucle pour parcourir les lignes de la feuille source :
- Le code parcourt toutes les lignes de la feuille source. Si la date dans la colonne A est plus ancienne que 30 jours par rapport à la date actuelle, la ligne est copiée dans la feuille d’archive.
4. Copie et suppression de données :
- Les lignes qui doivent être archivées sont copiées dans la feuille d’archive.
- Une fois copiées, ces lignes sont supprimées de la feuille source pour éviter de les dupliquer dans de futures exécutions.
5. Sauvegarde et fermeture :
- Après l’archivage, le fichier d’archive est sauvegardé et fermé.
6. Message de confirmation :
- Une boîte de message apparaît pour informer l’utilisateur que l’archivage est terminé.
Personnalisation du code :
• Critères de filtrage : Vous pouvez ajuster le critère de date (par exemple, changer currentDate – 30 pour un autre seuil de date).
• Colonnes spécifiques : Si les données à archiver se trouvent dans des colonnes autres que la colonne A, il suffit de modifier la référence wsSource.Cells(i, 1) pour pointer vers la colonne appropriée.
• Chemin du fichier d’archive : Veuillez ajuster le chemin d’accès du fichier d’archive (filePath) selon l’emplacement réel sur votre ordinateur.
Utilisation :
1. Ouvrez l’éditeur VBA (Alt + F11).
2. Créez un module et collez le code.
3. Exécutez la macro ArchiverDonnees pour archiver les anciennes données.
Cette automatisation permet d’archiver les données en fonction de critères spécifiques et de libérer de l’espace dans la feuille source tout en conservant un historique des données archivées.