Question Comment faire pour que Excel interprète la virgule comme un délimiteur 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 sont délimités par des tabulations (peut-être devraient-ils s'appeler .tsv ...)

le csv L'extension est associée à Excel lorsque Excel est installé. Cependant, si j'ouvre un de ces fichiers avec Excel, tout est jeté 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é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 Regardez au fichier à travers une vue claire du tableau. Je ne veux pas le traiter avec Excel.

Existe-t-il un moyen pour qu'Excel interprète automatiquement le délimiteur et affiche le fichier CSV comme une table appropriée dès son ouverture? J'en ai besoin pour pouvoir utiliser Excel comme visualiseur rapide pour ces fichiers.

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


71
2018-06-11 11:04


origine


Je comprends vraiment que la réponse choisie répond à votre question, mais la seconde devrait être soulignée car elle offre une solution globale, qui fonctionne par partage acros par courrier électronique, réseau, etc. - Rafareino


Réponses:


Lors de l'ouverture des 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 en fonction du système   paramètres régionaux, il peut attendre un point-virgule comme séparateur au lieu de   une virgule, car dans certaines langues la virgule est utilisée comme décimale   séparateur. (de Wikipédia)


Sur les fenêtres, vous pouvez changer le List separator la mise en Regional and Language Options comme spécifié sur le Site d'assistance Office :

Modifier 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 (en ligne avec la citation Wikipedia ci-dessus). Si c'est le cas, Excel ne pas Utilisez la virgule comme séparateur de liste, même si choisi. Pour de nombreuses régions hors États-Unis, la virgule est le symbole décimal par défaut.

Sur Mac OS X, ce réglage semble être déduit de la séparateur décimal réglage (dans le Langue et Région volet de Préférences de système, aller à Avancée). Si la Séparateur décimal est un point alors le séparateur CSV par défaut sera une virgule, mais si le Séparateur décimal est une virgule, alors 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 qui souhaitent examiner rapidement ces fichiers CSV. C'est un plugin pour Coup d'oeil appelé quicklook-csv qui gère la détection des séparateurs.


66
2018-06-11 11:07



Merci, c'est logique. J'imagine que cela n'interprètera tout simplement pas les onglets comme des délimiteurs par défaut (ce qui est également logique puisque CSV signifie Comma Separated Values, mais les utilisateurs utilisent des onglets dans les CSV en pratique et je dois y faire face). - Szabolcs
@Szabolcs Excel ne tentera pas de détecter le délimiteur lors de l’ouverture d’un fichier CSV (en utilisant fichier-> ouvert ou la explorateur), il utilisera simplement le réglage du système. Il parviendra cependant à détecter automatiquement le délimiteur (tabulation, virgule, point-virgule ou espace) tout en utilisant le importer fonctionnalité. - zakinster
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 l'avez mentionné dans la réponse). - Szabolcs
Plus tard, éditez: excuses! cela fonctionne! Apparemment, il faut redémarrer le programme et / ou se déconnecter / -in pour appliquer le changement. Je ne sais pas exactement quand, mais peu de temps après mon changement, cela a fonctionné. - mmo
Sous Mac OS X, n'oubliez pas de QUITTER Excel après avoir apporté les modifications. Excel reste ouvert si vous fermez uniquement toutes les feuilles ouvertes. Cliquez sur Excel> Quittez Excel ou appuyez simplement sur Commande + Q et vous avez terminé. - Paulo Pedroso


Si vous ne souhaitez pas modifier le format du fichier et ne ciblons que Excel, vous pouvez utiliser le truc Excel suivant pour vous aider.

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

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


74
2017-12-10 14:38



Assurez-vous de ne pas utiliser ce fichier pour modifier le fichier, 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 utilisateurs, assurez-vous qu’Excel puisse 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 j'ai eu du mal avec les virgules et les points-virgules, et j'ai toujours aidé tout le monde à changer de configuration. Merci beaucoup! - Rafareino
Seul sur quoi? - NateS


Vous n'avez pas besoin des guillemets autour du sep=, - tant que c'est la première ligne du fichier, cela fonctionnera, 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 citations.


9
2018-06-02 12:27





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.


1
2018-06-25 14:46





Assurez-vous d'inspecter le fichier CSV dans un éditeur simple comme Notepad pour vérifier qu'il est correctement formaté.

J'ai ajouté cette réponse après avoir résolu un bug stupide dans lequel les fichiers CSV 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 masquait les guillemets et affichait la ligne entière dans la colonne A, faisant apparaître qu'il semblait ignorer mes séparateurs de virgules.


0
2018-06-12 17:22





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
2017-07-31 06:30





Pour le néerlandais, j'ai eu un problème: Excel 2008 sur Windows 7 ne respectait pas la 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 contenait correctement des champs avec une virgule (séparateur décimal néerlandais) entre guillemets. En néerlandais, le séparateur décimal est , et le séparateur de liste est ; donc Excel ne pouvait pas lire un fichier avec , utilisé pour les deux (même pas 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 en 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: avec le fichier csv toujours chargé, si vous définissez maintenant les paramètres régionaux en anglais américain dans le Panneau de configuration et enregistrez le fichier, il aura été converti au format anglais américain (virgule comme séparateur de liste et point comme séparateur décimal).


0
2018-01-22 13:50





La réponse acceptée est correcte mais je suis une personne visuelle. Voici toutes les étapes du format de capture d'écran de la manière de procéder 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


0
2017-07-21 11:55