web-dev-qa-db-fra.com

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

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'extension csv 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 délimiteur.

Je peux au lieu de Fichier -> Importer ..., sélectionner le fichier, et choisir la manière précise d’interpréter le contenu (délimiteurs, types de données, etc.) mais la plupart du temps, je veux juste regarder à déposer dans une vue de table claire. 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.

85
Szabolcs

Lors de l’ouverture des fichiers CSV, Excel utilisera un paramètre système régional appelé List separator pour 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, il peut s’attendre à un point-virgule 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 paramètre List separator dans le Regional and Language Options comme spécifié sur le site Web de 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 utilisera non, virgule comme séparateur de liste, même si elle est choisie. Pour de nombreuses régions autres que les États-Unis, la virgule est le symbole décimal par défaut.

Sur Mac OS X _ , ce paramètre semble être déduit du paramètre séparateur décimal (dans le volet Langue et région de Préférences Système, accédez à Avancé). Si séparateur décimal est un point, le séparateur CSV par défaut sera une virgule, mais si 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.

77
zakinster

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

Ajoutez une nouvelle ligne en haut du fichier avec le texte "sep=," (guillemets compris) afin que Excel puisse 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.

83
user280725

Vous n'avez pas besoin des guillemets autour du sep=, - tant que c'est la première ligne du fichier, cela fonctionnera, du moins avec Excel 2016.

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

9

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.

 enter image description here  enter image description here  enter image description here  enter image description here  enter image description here  enter image description here

3
Sam B

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 un fichier TXT. Cliquez-droit sur le fichier TXT et sélectionnez "Ouvrir avec", puis 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.

OR

Installez LibreOffice et ouvrez le fichier CSV avec LibreOffice Calc.

1
Eric VDB

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
0
AzizD

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 est ;. Excel ne peut donc pas lire le fichier avec , utilisé pour les deux (même après avoir explicitement changé le séparateur de liste en , 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 comme première ligne:

sep=,

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


0
Paul Ogilvie

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 que j'avais 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.

0
edj