Comment obliger Excel à interpréter la virgule comme un délimiteur par défaut dans les fichiers CSV?

95

J'ai un certain nombre de fichiers .csv. Certains d'entre eux sont délimités par des virgules, d'autres par des tabulations (peut-être devraient-ils s'appeler .tsv ...)

L' csvextension est associée à Excel lors de l'installation d'Excel. Cependant, si j'ouvre l'un de ces fichiers avec Excel, tout est vidé dans la même colonne et la virgule n'est pas interprétée comme un séparateur.

Je peux au lieu de Fichier -> Importer ..., sélectionnez le fichier, et choisissez la manière précise d’interpréter le contenu (délimiteurs, types de données, etc.), mais la plupart du temps, je veux simplement examiner le fichier de vue de table. Je ne veux pas le traiter avec Excel.

Existe-t-il un moyen de demander à Excel d'interpréter automatiquement le délimiteur et d'afficher le fichier CSV sous forme de tableau approprié dès son ouverture? J'ai besoin de cela pour pouvoir utiliser Excel comme visualiseur rapide de tels fichiers.

Je soupçonne qu'il doit y avoir un moyen, sinon Excel ne s'associerait pas avec des fichiers CSV.

Szabolcs
la source
Je comprends vraiment que la réponse choisie réponde à votre question, mais la seconde doit être soulignée car elle offre une solution globale, qui fonctionne en partageant des courriels, un réseau, etc.
Rafareino

Réponses:

81

Lors de l'ouverture des fichiers CSV, Excel utilisera un paramètre système régional appelé List separatorpour déterminer le délimiteur par défaut à utiliser.

Microsoft Excel ouvre les fichiers .csv, mais selon les paramètres régionaux du système, un point-virgule peut être utilisé comme séparateur au lieu d'une virgule, car dans certaines langues, la virgule est utilisée comme séparateur décimal. (de Wikipedia )


Sous Windows , vous pouvez modifier le List separatorparamètre de la Regional and Language Optionsmanière spécifiée sur le site Web du support Office :

Changer le séparateur dans un fichier texte CSV

  1. Cliquez sur le menu Démarrer de Windows.
  2. Cliquez sur Panneau de configuration.
  3. Ouvrez la boîte de dialogue Options régionales et linguistiques.
  4. Cliquez sur l'onglet Options régionales.
  5. Cliquez sur Personnaliser / Paramètres supplémentaires (Win10).
  6. Tapez un nouveau séparateur dans la zone Séparateur de liste.
  7. Cliquez deux fois sur OK.

Remarque : cela ne fonctionne que si le symbole décimal n'est pas également désigné par une virgule (conformément à la citation de Wikipedia ci-dessus). Si tel est le cas, Excel n'utilisera pas de virgule comme séparateur de liste, même s'il est choisi. Pour de nombreuses régions autres que les États-Unis, la virgule est le symbole décimal par défaut.

Sous Mac OS X , ce paramètre semble être déduit du paramètre de séparateur décimal (dans la sous - fenêtre Langue et région des Préférences Système , accédez à Avancé ). Si le séparateur décimal est un point, le séparateur CSV par défaut sera une virgule, mais si le séparateur décimal est une virgule, le séparateur CSV par défaut sera un point-virgule.

Comme vous l'avez dit vous-même dans le commentaire, les utilisateurs de Mac ont la possibilité de consulter rapidement ces fichiers CSV. C'est un plugin pour Quick Look appelé quicklook-csv qui gère la détection de séparateur.

zakinster
la source
Merci, cela a du sens. J'imagine que par conséquent, les onglets ne seront pas interprétés comme des délimiteurs par défaut (ce qui est également logique puisque CSV signifie Valeurs Séparées par des Virgules, mais les gens utilisent les onglets dans les CSV en pratique et je dois gérer cela).
Szabolcs
@Szabolcs Excel n'essayera pas de détecter le délimiteur lors de l'ouverture d'un fichier CSV (à l'aide de fichier-> ouvrir ou de l' explorateur ), il utilisera simplement le paramètre système. Il parviendra toutefois à détecter automatiquement le délimiteur (tabulation, virgule, point-virgule ou espace) lors de l'utilisation de la fonction d' importation .
Zakinster
1
Votre réponse était également valable sur OS X: c'est toujours le point décimal / la virgule qui cause le "problème" (comme vous le mentionnez dans la réponse).
Szabolcs
1
Édition ultérieure: excuses! ça marche! Apparemment, il faut redémarrer le programme et / ou se déconnecter / -in à nouveau pour appliquer le changement. Je ne sais pas exactement quand, mais peu de temps après mon changement, cela a soudainement fonctionné.
mmo
1
Sur Mac OS X, n'oubliez pas de quitter Excel après avoir apporté les modifications. Excel reste ouvert si vous ne fermez que toutes les feuilles ouvertes. Cliquez sur Excel> Quitter Excel ou appuyez simplement sur Command + Q et vous avez terminé.
Paulo Pedroso
94

Si vous ne souhaitez pas modifier le format du fichier et que vous ciblez EXCLUSIVEMENT Excel, vous pouvez utiliser l'astuce suivante pour vous aider.

Ajoutez une nouvelle ligne en haut du fichier avec le texte "sep=,"(y compris les guillemets) pour permettre à Excel d'ouvrir le fichier avec "," comme séparateur de liste.

Il est très facile d’éviter de modifier les paramètres régionaux de Windows et d’obtenir un résultat cohérent. Mais c'est spécifique à Excel.

utilisateur280725
la source
1
Assurez-vous de ne l'utiliser que pour regarder le fichier et de ne pas le modifier, sinon vous risquez de rencontrer l'un des problèmes suivants: theonemanitdepartment.wordpress.com/2014/12/15/…
Wouter
Mieux encore, si vous devez redistribuer ce fichier à d'autres personnes, assurez-vous qu'excel sera en mesure de comprendre le fichier, quelles que soient leurs configurations. J'utilise toujours csv pour pouvoir utiliser n'importe quel système de contrôle de version pour partager et collaborer sur ces fichiers, mais je me suis battu avec virgule et point-virgule, et j'ai toujours bâclé tout le monde pour changer leur configuration, pas plus. Merci beaucoup!
Rafareino
1
Seul sur quoi?
NateS
11

Vous n'avez pas besoin de guillemets dans la sep=,mesure où tant que la première ligne du fichier fonctionnera, au moins avec Excel 2016.

J'ai découvert que si le fichier est délimité par des tabulations, sep=\tfonctionne correctement, avec et sans les guillemets.

Stephen Hemingway
la source
4

La réponse acceptée est correcte mais je suis une personne visuelle. Voici chaque étape dans le format de capture d’écran de la procédure à suivre dans Windows 10.

entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici

Sam B
la source
2
Très utile! Rappelez-vous simplement (comme déjà mentionné ci-dessus) que ce List separatorsera ignoré si le même symbole est utilisé Decimal symbol. Vous trouverez souvent un ,symbole décimal. Veillez donc à le remplacer par autre chose (par exemple .) lors du réglage List separatorsur ,.
Dirk
1

Lorsque le séparateur dans les paramètres régionaux n'est pas une virgule mais un point-virgule (séparateur néerlandais), renommez le fichier CSV en fichier TXT. Cliquez-droit sur le fichier TXT et sélectionnez "Ouvrir avec" et sélectionnez "Excel". Dans Excel, sélectionnez la première colonne, sélectionnez les données dans le ruban et séparez le texte en colonnes.

OU

Installez LibreOffice et ouvrez le fichier CSV avec LibreOffice Calc.

Eric VDB
la source
1

J'avais un .csvfichier avec séparateur ;et paramètres régionaux défini sur séparateur de liste ;. Cependant, Excel n'a toujours pas analysé les colonnes.

entrez la description de l'image ici

Il s'est avéré que c'était un problème d'encodage. Les fichiers ont été exportés à partir de SQL Server Management Studio 2005 et sont codés dans UCS-2 LE BOM. En utilisant Notepad ++, je suis passé au codage UTF-8et tout a commencé à fonctionner.

Ogglas
la source
0

Assurez-vous d'inspecter le fichier CSV dans un éditeur simple, tel que le Bloc-notes, afin de vous assurer qu'il est correctement formaté.

J'ai ajouté cette réponse après avoir résolu un bogue stupide dans lequel les fichiers CSV créés avec VB n'étaient pas ouverts avec des colonnes distinctes dans Excel. J'ai découvert que la manière dont j'avais écrit les lignes entourait chaque ligne de guillemets. Excel masquait les guillemets et montrait toute la ligne de la colonne A, donnant l'impression que les séparateurs de virgule étaient ignorés.

Edj
la source
0

Le meilleur moyen sera de l'enregistrer dans un fichier texte avec l'extension csv

Sub ExportToCSV()
    Dim i, j As Integer
    Dim Name  As String

    Dim pathfile As String


    Dim fs As Object
        Dim stream As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists

    i = 15
    Name = Format(Now(), "ddmmyyHHmmss")
    pathfile = "D:\1\" & Name & ".csv"

    Set stream = fs.CreateTextFile(pathfile, False, True)

fileexists:

    If Err.Number = 58 Then
        MsgBox "File already Exists"
        'Your code here
        Return
    End If
    On Error GoTo 0

    j = 1
    Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

        stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

        j = j + 1
        i = i + 1
    Loop

stream.Close

End Sub
AzizD
la source
0

Pour le néerlandais, Excel 2008 sur Windows 7 ne répondait pas à la norme RFC4180:

"Les champs contenant des sauts de ligne (CRLF), des guillemets doubles et des virgules doivent être placés entre guillemets."

Un fichier séparé par des virgules avait correctement des champs avec une virgule (séparateur décimal néerlandais) entre guillemets. Dans les paramètres régionaux néerlandais, le séparateur décimal est ,et le séparateur de liste sont ;tels que Excel ne peut pas lire le fichier ,utilisé pour les deux (même après avoir explicitement remplacé le séparateur de liste par ,dans le Panneau de configuration).

L'entrée ressemble à:

"06-07-2017 17:03:18","********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

La solution a été donnée par @ user280725:

Utilisez le Bloc-notes pour insérer en première ligne:

sep=,

(Cela signifie que la note de l'utilisateur @zakinster dans sa solution n'a plus besoin d'être appliquée.)


Intéressant: avec le fichier csv toujours chargé, si vous définissez les paramètres régionaux sur Anglais américain dans le Panneau de configuration et que vous enregistrez le fichier, il aura été converti au format Anglais américain (virgule en tant que séparateur de liste et point en tant que séparateur décimal).

Paul Ogilvie
la source