2013-06-11 11:04:23 +0000 2013-06-11 11:04:23 +0000
99
99
Advertisement

Comment faire pour qu'Excel interprète la virgule comme délimiteur par défaut dans les fichiers CSV ?

Advertisement

J'ai plusieurs fichiers .csv. Certains 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 un de ces fichiers avec excel, tout se retrouve 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 le fichier à travers un tableau clair. Je ne veux pas le traiter avec Excel.

Y a-t-il un moyen de faire en sorte qu'Excel interprète automatiquement le délimiteur et affiche le fichier CSV comme un tableau correct dès qu'il est ouvert ? J'en ai besoin pour pouvoir utiliser Excel comme visionneuse rapide pour de tels fichiers.

Je pense qu'il doit y avoir un moyen, sinon Excel ne s'associerait pas aux fichiers CSV.

Advertisement
Advertisement

Réponses (9)

100
100
100
2013-12-10 14:38:58 +0000

Si vous ne cherchez pas à modifier le format du fichier, et que vous visez UNIQUEMENT Excel, vous pouvez utiliser l'astuce Excel suivante pour vous aider.

Ajoutez une nouvelle ligne en haut du fichier avec le texte "sep=," (y compris les guillemets) afin qu'Excel ouvre le fichier avec “,” comme séparateur de liste.

C'est une astuce très simple pour éviter de modifier vos paramètres régionaux Windows et obtenir un résultat cohérent. Mais c'est spécifique à Excel.

85
85
85
2013-06-11 11:07:17 +0000

En ouvrant les fichiers CSV, Excel utilisera un paramètre régional du système appelé List separator pour déterminer le délimiteur par défaut à utiliser.

Microsoft Excel ouvrira les fichiers .csv, mais selon les paramètres régionaux du système, il peut s'attendre à ce qu'un point-virgule soit utilisé comme séparateur au lieu d'une virgule, puisque dans certaines langues, la virgule est utilisée comme séparateur décimal. (de Wikipedia )


Sur Windows , vous pouvez modifier le paramètre List separator dans le Regional and Language Options comme spécifié sur le site web du support Office :

Modifier le séparateur dans un fichier texte CSV

  1. Cliquez sur le menu Démarrer de Windows.
  2. Cliquez sur le 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 la liste.
  7. Cliquez deux fois sur OK.

Note : cela ne fonctionne que si le symbole Décimal n'est pas également désigné par une virgule (conformément à la citation Wikipedia ci-dessus). Si c'est le cas, Excel n'utilisera pas la 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 réglage semble être déduit du réglage du séparateur décimal (dans le volet Langue & Région des Préférences Système, allez à 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, il existe une alternative pour les utilisateurs de Mac pour regarder rapidement ces fichiers CSV. Il s'agit d'un plugin pour Quick Look appelé quicklook-csv qui gère la détection du séparateur.

11
Advertisement
11
11
2017-06-02 12:27:39 +0000
Advertisement

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

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

5
5
5
2018-07-21 11:55:56 +0000
1
Advertisement
1
1
2019-09-23 12:03:13 +0000
Advertisement

J'avais un fichier .csv avec le séparateur ; et les paramètres régionaux réglés sur le séparateur de liste ;. Cependant, Excel n'analysait toujours pas les colonnes.

Il s'est avéré que c'était un problème d'encodage. Les fichiers ont été exportés depuis le serveur SQL Management Studio 2005 et ont été encodés dans UCS-2 LE BOM. En utilisant Notepad ++, j'ai changé l'encodage en UTF-8 et tout a commencé à fonctionner.

1
1
1
2018-06-25 14:46:53 +0000

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. Faites un clic droit sur le fichier TXT et sélectionnez “Ouvrir avec” puis “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.

0
Advertisement
0
0
2018-01-22 13:50:36 +0000
Advertisement

Pour le néerlandais, j'ai eu un problème avec Excel 2008 sous Windows 7 qui ne respectait pas la RFC4180 :

“Les champs contenant des sauts de ligne (CRLF), des guillemets et des virgules doivent être mis 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 la langue néerlandaise, le séparateur décimal est , et le séparateur de liste est ;, de sorte qu'Excel ne pouvait pas lire un 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 :

Utiliser Notepad pour insérer comme première ligne:

sep=,

(Cela signifie que la note de l'utilisateur @zakinster dans sa solution n'a plus besoin de s'appliquer. )


Intéressant : le fichier csv étant toujours chargé, si vous réglez maintenant la locale sur US English dans le panneau de configuration et que vous enregistrez le fichier, il aura été converti au format US English (virgule comme séparateur de liste et point comme séparateur décimal).

0
0
0
2017-06-12 17:22:25 +0000

Assurez-vous d'inspecter le fichier CSV dans un simple éditeur comme Notepad pour vérifier 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'ai créés avec VB n'étaient pas ouverts avec des colonnes séparées dans Excel. J'ai découvert que la façon dont j'avais écrit les lignes entourait chaque ligne de guillemets. Excel cachait les guillemets et affichait la ligne entière dans la colonne A, faisant croire qu'il ignorait mes séparateurs de virgule.

0
Advertisement
0
0
2017-07-31 06:30:51 +0000
Advertisement

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:\" & 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
Advertisement

Questions connexes

6
13
9
10
1
Advertisement
Advertisement