Note: The other languages of the website are Google-translated. Back to English

Comment convertir par lots plusieurs fichiers Excel en fichiers CSV dans Excel?

Dans Excel, nous pouvons convertir le classeur en fichier CSV avec la fonction Enregistrer sous, mais pourriez-vous savoir comment convertir par lots plusieurs fichiers Excel en fichiers CSV séparés? Dans cet article, j'introduis un code VBA pour convertir par lots tous les fichiers Excel d'un dossier en fichiers CSV dans Excel.

Convertir par lots les fichiers Excel d'un dossier en fichiers CSV avec VBA

Convertissez des feuilles de classeur en fichiers CSV séparés avec Kutools for Excelbonne idée3


Convertir par lots les fichiers Excel d'un dossier en fichiers CSV avec VBA

Dans Excel, aucune fonction intégrée ne permet de résoudre ce travail rapidement sauf VBA.

1. Activez Excel et appuyez sur Alt + F11 clés ouvertes Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Module pour créer un nouveau module.

3. Copiez le code ci-dessous et collez-les dans la nouvelle fenêtre Module.

VBA: convertir par lots des fichiers Excel en CSV

Sub WorkbooksSaveAsCsvToFolder()
'UpdatebyExtendoffice20181031
Dim xObjWB As Workbook
Dim xObjWS As Worksheet
Dim xStrEFPath As String
Dim xStrEFFile As String
Dim xObjFD As FileDialog
Dim xObjSFD As FileDialog
Dim xStrSPath As String
Dim xStrCSVFName As String

    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    On Error Resume Next
Set xObjFD = Application.FileDialog(msoFileDialogFolderPicker)
    xObjFD.AllowMultiSelect = False
    xObjFD.Title = "Kutools for Excel - Select a folder which contains Excel files"
    If xObjFD.Show <> -1 Then Exit Sub
    xStrEFPath = xObjFD.SelectedItems(1) & "\"

    Set xObjSFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjSFD.AllowMultiSelect = False
    xObjSFD.Title = "Kutools for Excel - Select a folder to locate CSV files"
    If xObjSFD.Show <> -1 Then Exit Sub
    xStrSPath = xObjSFD.SelectedItems(1) & "\"

    xStrEFFile = Dir(xStrEFPath & "*.xls*")

    Do While xStrEFFile <> ""
        Set xObjWB = Workbooks.Open(Filename:=xStrEFPath & xStrEFFile)
        xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"
        xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV
        xObjWB.Close savechanges:=False
        xStrEFFile = Dir
  Loop
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

4. presse F5 , sélectionnez le dossier contenant les fichiers Excel que vous souhaitez convertir en fichiers CSV dans la première boîte de dialogue contextuelle.
doc batch vers csv 1

5. Cliquez OK, puis dans la deuxième boîte de dialogue contextuelle, sélectionnez le dossier dans lequel placer les fichiers CSV.
doc batch vers csv 2

6. Cliquez OK, maintenant les fichiers Excel du dossier ont été convertis en fichiers CSV et enregistrés dans un autre dossier.
doc batch vers csv 3


Convertissez des feuilles de classeur en fichiers CSV séparés avec Kutools for Excel

Comme nous le savons, nous ne pouvons convertir l'ensemble du classeur en un seul fichier CSV dans Excel qu'avec sa fonction Enregistrer sous. Mais dans certains cas, vous souhaitez convertir la feuille unique en fichier CSV, dans ce cas, le Classeur fractionné utilité de Kutools pour Excel peut vous aider.

Kutools pour Excel, avec plus de 300 fonctions pratiques, rend vos travaux plus faciles. 

Après l'installation de Kutools for Excel, procédez comme suit:(Téléchargez gratuitement Kutools pour Excel maintenant!)

1. Activez le classeur pour lequel vous souhaitez convertir ses feuilles en tant que fichiers CSV séparés, cliquez sur Kutools Plus > Classeur > Classeur fractionné.
doc batch vers csv 4

2. dans le Classeur fractionné boîte de dialogue, vérifiez le nom de la feuille à fractionner (toutes les feuilles sont cochées par défaut), cochez Enregistrer sous tapez, choisissez CSV (Macintosh) (* .CSV) dans la liste déroulante.
doc batch vers csv 5

3. Cliquez Divisé faire sortir un Parcourir pour le dossier , choisissez ou créez un dossier pour placer les fichiers CSV.
doc batch vers csv 6

4. Cliquez OK, maintenant le classeur a été divisé en fichiers CSV séparés.
doc batch vers csv 7


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtrée...
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammes...
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellules...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (21)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Ty ça marche vraiment cher !!
Coffre-fort
Ce commentaire a été minimisé par le modérateur sur le site
Fonctionne très bien, merci pour le code !
Ma seule remarque serait que ce code coupe les noms de fichiers lorsqu'il y a un "." dans le nom de fichier lui-même (par exemple file.123.csv devient file.csv).
Sam
Ce commentaire a été minimisé par le modérateur sur le site
Avez-vous trouvé un moyen de contourner ce problème?
Carol
Ce commentaire a été minimisé par le modérateur sur le site
Carole,

A la ligne 33 j'ai remplacé ce code :

xStrCSVFName = xStrSPath & Gauche(xStrEFile, InStr(1, xStrEFile, ".") - 1) & ".csv"

Avec ce code:

xStrCSVFName = xStrSPath & Gauche(xStrEFile, InStr(1, xStrEFile, ".xlsx") - 1) & ".csv"

Notez que si vous utilisez une autre extension Excel (.xls, .xlsm, etc.), vous devez la modifier en tant que telle :)
Clara
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup! Cela m'a fait gagner tellement de temps !!
Sonya
Ce commentaire a été minimisé par le modérateur sur le site
Autre petite remarque :

Si les cellules des fichiers Excel d'origine sont toutes au format "Général", une certaine précision est perdue lorsque le fichier est enregistré au format CSV
Par exemple, si une valeur de cellule dans Excel est 0.123456789123456, la valeur dans le CSV sera 0.123456789 (il manque les décimales restantes), tant que la cellule a été formatée en tant que "Général". Cela peut être résolu en formatant toutes les cellules du fichier Excel en autre chose que "Général" (par exemple, "Texte"). Dans ce cas, le CSV *aura* toujours tous les détails/précisions. C'est-à-dire que les valeurs dans les fichiers Excel seront entièrement intactes après l'enregistrement au format CSV.

Comment cette macro pourrait-elle être modifiée, de sorte qu'elle définit la mise en forme de toutes les cellules du fichier Excel sur "Texte", avant d'enregistrer au format CSV ?
J'imagine qu'il doit en quelque sorte utiliser ce qui suit, mais je n'arrive pas à comprendre comment inclure correctement dans la macro:

Cells.Select
Selection.NumberFormat = "@"
Sam
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour le partage. J'essaie d'enregistrer plusieurs fichiers xls contenant une valeur unique, en produisant une invite demandant oui ou non avant d'enregistrer. L'invite lit ..

"Certaines fonctionnalités de votre classeur risquent d'être perdues si vous l'enregistrez au format CSV (délimité par des virgules). Voulez-vous continuer à utiliser ce format ?"

Quelqu'un saurait-il où ajouter le code pour répondre oui à cette invite ?
Justin
Ce commentaire a été minimisé par le modérateur sur le site
Je pense qu'il vaut la peine d'ajouter une meilleure gestion des erreurs pour les fichiers contenant des caractères spéciaux, actuellement ils sont simplement ignorés.
Sen
Ce commentaire a été minimisé par le modérateur sur le site
top merci :)
Wilfried
Ce commentaire a été minimisé par le modérateur sur le site
Ceci est incroyable. Merci!
Jared
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, y a-t-il une modification rapide du code qui me permettrait de passer d'un CSV UTF-8 (délimité par des virgules) à un CSV (délimité par des virgules) ? J'ai essayé la première méthode et j'avais bon espoir, mais il semble que cela ne les changera pas car ils sont déjà sous une forme ou une autre de CSV. Il y a peut-être un processus plus simple mais je ne trouve rien. Je dois convertir peut-être 150 fichiers qui ont été enregistrés dans ce format et je ne veux pas ouvrir tous les fichiers et enregistrer sous si je peux l'éviter. Toute aide est appréciée!
TBenson85
Ce commentaire a été minimisé par le modérateur sur le site
Ainsi, après avoir examiné le code d'un peu plus près, j'ai vu où le type de fichier initial devait être .xls. Le remplacement par .csv a donc résolu le problème.
TBenson85
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
das Makro funktioniert ganz gut, aber bei mir kommt, wenn ich als filename:xlCSVUTF8 eine anders formatierte CSV raus als über speichern unter -> csv(utf8) erreiche!
KonV
Ce commentaire a été minimisé par le modérateur sur le site
xObjWB.SaveAs Nom de fichier :=xStrCSVFName, Format de fichier :=xlCSVUTF8
Mehdi
Ce commentaire a été minimisé par le modérateur sur le site
aussi er schreibt die verschiedenen Spalten alle in eine Spalte, dass müsste der Fehler sein ?!
KonV
Ce commentaire a été minimisé par le modérateur sur le site
salut.. dans certains fichiers excel qui seront convertis en csv il y a un nominal qui doit être arrondi, quelle est la solution ? Merci
Sam
Ce commentaire a été minimisé par le modérateur sur le site
Salut, Sam, il n'y a pas de solution pour résoudre ce problème, sauf pour formater les données en tant que texte avant de convertir le fichier en csv.
Maison ensoleillé
Ce commentaire a été minimisé par le modérateur sur le site
Lorsque j'ai exécuté ceci, il n'a converti que la première feuille de calcul et a ignoré les feuilles supplémentaires dans le classeur. Existe-t-il un moyen de modifier le code pour inclure des feuilles supplémentaires ?
Henri
Ce commentaire a été minimisé par le modérateur sur le site
Salut, vous pouvez essayer le code ci-dessous, il enregistrera toutes les feuilles de classeurs dans le dossier au format csv séparément. Il ne peut pas fonctionner avec le classeur en cours.
Sub WorkbooksSaveAsCsvToFolder()

'UpdatebyExtendoffice20220520

Dim xObjWB As Workbook

Dim xObjWS As Worksheet

Dim xStrEFPath As String

Dim xStrEFFile As String

Dim xObjFD As FileDialog

Dim xObjSFD As FileDialog

Dim xStrSPath As String

Dim xStrCSVFName As String

Dim xWSh As Worksheet

    Application.ScreenUpdating = False

    Application.EnableEvents = False

    Application.Calculation = xlCalculationManual

    On Error Resume Next

Set xObjFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjFD.AllowMultiSelect = False

    xObjFD.Title = "Kutools for Excel - Select a folder which contains Excel files"

    If xObjFD.Show <> -1 Then Exit Sub

    xStrEFPath = xObjFD.SelectedItems(1) & "\"

    Set xObjSFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjSFD.AllowMultiSelect = False

    xObjSFD.Title = "Kutools for Excel - Select a folder to locate CSV Files "

    If xObjSFD.Show <> -1 Then Exit Sub

    xStrSPath = xObjSFD.SelectedItems(1) & "\"

    xStrEFFile = Dir(xStrEFPath & "*.xls*")

    Do While xStrEFFile <> ""

        Set xObjWB = Workbooks.Open(Filename:=xStrEFPath & xStrEFFile)

        For Each xWSh In xObjWB.Worksheets

            xWSh.Activate

            xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & "_" & xWSh.Name & ".csv"

            xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        Next

        xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"

        xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        xObjWB.Close savechanges:=False

        xStrEFFile = Dir

  Loop

    Application.Calculation = xlCalculationAutomatic

    Application.EnableEvents = True

    Application.ScreenUpdating = True

End Sub
Maison ensoleillé
Ce commentaire a été minimisé par le modérateur sur le site
Je n'ai pas réussi à faire fonctionner cela pour mes fichiers xls. Ce sont des feuilles de calcul 97-03 et j'utilise actuellement la version Microsoft 365 la plus active. Lorsque j'exécute le code, le dossier apparaît comme vide
Eric
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, je suis désolé que votre problème ne réapparaisse pas dans ma version, je n'ai aucune idée pour vous aider.
Maison ensoleillé
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0  Personnages
Emplacements suggérés