VBA : Comment enregistrer des feuilles sous forme de fichiers CSV (avec exemple)
Vous pouvez utiliser la syntaxe suivante dans VBA pour enregistrer chaque feuille d’un classeur dans un fichier CSV :
Sub SaveCSV()
Dim Ws As Worksheet
Dim SaveDir As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
'specify directory to save CSV files in
SaveDir = "C:\Users\bobbi\OneDrive\Desktop\"
'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
End Sub
Cette macro particulière enregistrera chaque feuille du classeur actuellement actif dans un fichier CSV.
Les fichiers CSV seront enregistrés dans le chemin spécifié dans la variable SaveDir .
Remarque : La ligne Application.DisplayAlerts=False indique à VBA de désactiver temporairement toutes les alertes d’affichage dans Excel lors de l’enregistrement des fichiers.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : enregistrer des feuilles sous forme de fichiers CSV à l’aide de VBA
Supposons que nous ayons un classeur Excel avec deux feuilles.
La première feuille s’appelle player_stats et contient des statistiques sur différents joueurs de basket-ball :
La deuxième feuille s’appelle team_info et contient des informations sur différentes équipes de basket-ball :
Supposons que nous souhaitions enregistrer chacune de ces feuilles sous forme de fichiers CSV individuels sur le bureau de notre ordinateur.
Nous pouvons créer la macro suivante pour ce faire :
Sub SaveCSV()
Dim Ws As Worksheet
Dim SaveDir As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
'specify directory to save CSV files in
SaveDir = "C:\Users\bobbi\OneDrive\Desktop\"
'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
End Sub
Une fois cette macro exécutée, chaque feuille sera enregistrée sous forme de fichier CSV sur notre bureau.
Si je navigue vers le bureau de mon ordinateur, je peux voir chacun de ces fichiers CSV individuels avec des noms de fichiers qui correspondent aux noms de feuilles :
Si j’ouvre le fichier CSV player_stats à l’aide du Bloc-notes, je peux voir que les valeurs du fichier Excel ont été enregistrées sous forme de valeurs séparées par des virgules :
Notez que dans cet exemple, nous avons pu enregistrer deux feuilles dans notre classeur sous forme de fichiers CSV individuels, mais cette même macro fonctionnera avec n’importe quel nombre de feuilles.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :
VBA : Comment compter le nombre de feuilles dans un classeur
VBA : Comment extraire des données d’un autre classeur
VBA : Comment ajouter de nouvelles feuilles