Excel n'honore pas le paramètre de délimiteur pour la lecture ou l'écriture de fichiers CSV


20

Lorsque vous enregistrez / ouvrez des fichiers CSV dans Excel, le séparateur par défaut est un point-virgule (;), car j'ai besoin que ce soit une virgule (,) J'ai essayé de le changer en modifiant les paramètres de langue et régionaux après plusieurs autres messages sur ce problème ( ie Comment obtenir Excel pour interpréter la virgule comme un délimiteur par défaut dans les fichiers CSV? ).

Cependant, après avoir modifié le séparateur de liste dans ces paramètres, mon Excel continue d'enregistrer les fichiers CSV avec un point-virgule. Est-ce parce qu'Excel a été installé alors que mon séparateur de liste était défini comme point-virgule? ou y a-t-il un autre paramètre qui me manque ici?

Merci d'avance.


Le problème est-il lié à la lecture de fichiers CSV existants ou à leur création en utilisant une virgule comme séparateur?
fixer1234

Les deux, j'ai déjà fait ce que @Raystafarian a mentionné avant d'enregistrer un nouveau fichier. Mon cadre régional est correct. Ensuite, j'ouvre Excel et enregistre au format CSV et lorsque j'ouvre le fichier dans le bloc-notes, je peux voir qu'il a utilisé un point-virgule. Si j'ouvre dans Excel, il se charge correctement car Excel utilise toujours un; pour séparer les colonnes.
Sandra

Réponses:


35

J'ai trouvé le problème. Mon symbole décimal dans les paramètres régionaux était également une virgule (européenne) donc, même lorsque mon séparateur de liste était une virgule, le CSV était enregistré avec des points-virgules. Maintenant, j'ai changé mon symbole décimal en un point et maintenant le fichier CSV est créé correctement avec des virgules comme séparateurs. J'ai testé cela deux fois et je sais maintenant qu'il doit y avoir une exception: si le symbole décimal est une virgule, alors le séparateur de liste sera un point-virgule, même défini autrement.


12
Merci d'avoir pris le temps de mettre à jour le message avec une réponse.
Gary's Student

5

Pour économiser

Vous devez ajuster le séparateur de liste dans les paramètres linguistiques et régionaux avant d'enregistrer le fichier -

entrez la description de l'image ici


Pour ouverture

Accédez à Données - Obtenir des données externes - à partir du texte

entrez la description de l'image ici

sélectionner le fichier

Sélectionnez délimité , appuyez sur suivant entrez la description de l'image ici

et sélectionnez la virgule de délimitation

entrez la description de l'image ici

Cliquez sur terminer

entrez la description de l'image ici


Ou, tirez-le et utilisez du texte pour les colonnes voir ici


Si j'ai bien lu la question, il semble que le problème crée (sauvegarde), un fichier délimité en utilisant des virgules pour le délimiteur (2ème paragraphe).
fixer1234

@ fixer1234 ouais c'est comme ça que je l'ai lu au début. Mais j'ai pensé que le premier paragraphe était important. Je n'ai aucune idée de ce qui est correct. Quoi qu'il en soit, je n'ai pas de solution pour la création autre que ce que l'OP a mentionné avoir déjà essayé.
Raystafarian

Oui, j'ai modifié les paramètres régionaux avant d'enregistrer le fichier. Ça n'a pas aidé. Lorsque je reçois des fichiers CSV d'autres personnes délimitées par une virgule, j'utilise votre méthode pour importer correctement les données, puis j'enregistre et cela va dans un point-virgule. C'est ennuyeux car chaque fois que je dois aller dans le bloc-notes et remplacer tous les points-virgules par des virgules avant d'utiliser mon CSV comme fichier d'importation.
Sandra

0

Voici une très belle macro qui fonctionne plutôt bien:

Sub saveCSV()
File = Application.GetSaveAsFilename(InitialFileName:="file.csv", FileFilter:="CSV (*.csv), *.csv")
ActiveWorkbook.SaveAs Filename:=File, FileFormat:=xlCSV, CreateBackup:=False, local:=False
End Sub

0

C'est un peu vieux, mais j'ai rencontré le même problème:
avait un CSV délimité par un point-virgule ( ;). Les paramètres du séparateur système (Windows) sont également définis sur un point-virgule.

  • Si j'ai ouvert le CSV manuellement, le fichier a été séparé correctement.
  • Si je laisse VBA l'ouvrir, il le sépare incorrectement avec une virgule.

L'utilisation Delimiter:=";"ne fonctionne apparemment qu'avec.txt .

CEPENDANT, l'utilisation a Local :=Truerésolu le problème pour moi:

Workbooks.Open(Filename:=fullpath, Local:=True)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.