Découper fichier CSV par critère

yassineouachani -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Pouvez-vous m'aider sur ce sujet. Je dispose d'un gros fichier CSV qui ne peux pas s'ouvrir via EXCEL et je souhaite le découper en plusieurs fichiers EXCEL en se basant sur une colonne société.

Exemple fichier total.csv:
blablbal;EDF;21/07/1996;200
tototiti;PSA;14/05/2016;300
blablbal;EDF;21/03/2015;900
duponduron;Auchan;13/07/2017
tototiti;PSA;14/05/2013;700

le résultat à obtenir est :

Fichier EDF.xls:
blablbal;EDF;21/07/1996;200
blablbal;EDF;21/03/2015;900

Fichier PSA.xls:
tototiti;PSA;14/05/2016;300
tototiti;PSA;14/05/2013;700

Fichier Auchan.xls:
duponduron;Auchan;13/07/2017

Je vous remercie par avance de votre retour.

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Fichier EDF.xls:
    blablbal;EDF;21/07/1996;200

    Vous voulez toujours les ";" dans le fichier xls ??????
    0
    1. Yassine ouachani
       
      Bonjour

      Non je ne souhaite pas que les ; restent dans le fichier Excel , les données doivent s'afficher en tableau

      Merci
      0
  2. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
     
    Bonjour,

    Voilà un script batch pour découper votre fichier CSV en plusieurs parties :

    @echo off

    set destination=%USERPROFILE%\Desktop\Tri_CSV

    if "A%~1A"=="AA" (exit)
    if /i "%~x1"==".csv" (call :tri %1)

    exit

    :tri
    title %1

    if not exist "%destination%" (mkdir "%destination%")

    for /f "eol=µ usebackq tokens=1,2,3,* delims=;" %%A in ("%~1") do (
    echo %%A;%%B;%%C;%%D
    echo %%A;%%B;%%C;%%D >> %destination%\%%B.csv
    )
    goto :eof
    rem

    Pour se servir du script, il faut faire glisser votre fichier .csv sur l'icône du script.

    Un dossier "Tri_CSV" sera crée sur votre bureau.


    “L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
    0