Scinder 1 fichier au format csv en plusieurs fichiers csv

Résolu
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   -  
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Je souhaite scinder 1 fichier de plusieurs lignes (30 000 par exemple) en plusieurs fichiers de 300 lignes + ou - .

(fichier au format csv)

En vba, si possible : (un exemple de ce que je souhaite)

sélectionner le fichier à découper svp.

Combien de lignes par fichier souhaitez-vous ?

Une fois la réponse apportée aux 2 questions, la découpe doit se faire en gardant le format dans chaque colonne (exemple colonne A = format Texte).....

La 1ère ligne (en tête de colonne) sera la même pour tous les fichiers.

Merci d'avance pour votre aide ! Je n'ai pas trouvé de solution sur le net.....

Cdlt


Windows / Firefox 91.0

6 réponses

  1. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 477
     

    Bonjour,

    Donc chaque découpes est enregistrer comme nouveu fichier cvs.... Oui / Non?

    Merci de fournir au moins 5 à 10 lignes du fichier à scinder! 

    Pour joindre le fichier via https://www.cjoint.com/

     suivre les instructions et coller le lien sur nouveau poste.


    1
    1. PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21
       

      Bonjour Le Pingou,

      Oui pour chaque découpe un nom différent souhaité

      Pour exemple le fichier à scinder se nomme MTT.csv

      Le résultat sera :

      MTT01.CSV

      MTT02.CSV

      MTT03.CSV .......etc

      https://www.cjoint.com/c/LIfo2GzKsdV

      Cdlt

      0
  2. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     

    Bonjour,

    7zip permet de diviser un fichier, sur 7zip, sur la liste des fichiers, clic-droit diviser en, suivant la taille, je ne sais pas si il respecte les sauts de ligne.

    Ou un petit batch ligne de commande : https://www.developpez.net/forums/d1502877/general-developpement/programmation-systeme/windows/scripts-batch/diviser-fichier-texte-sous-windows/#post8153273
    facilement adaptable pour créer une première ligne avec les titres de colonnes.


    1
    1. PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21
       

      Bonjour jee pee,

      Clic-droit sur 7zip, je n'ai pas trouvé de diviser en ...

      Pour la 2ème solution, j'ai créé un .bat sans succès...

      Merci quand même !

      Cdlt

      0
  3. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     

    Le script fonctionne, il avait juste une erreur de compteur de ligne sur le 1 fichier

    @echo off
    setLocal EnableDelayedExpansion
    set limit=10000
    set file=splitA.txt
    set lineCounter=1
    set filenameCounter=1
     
    set name=
    set extension=
    for %%a in (%file%) do (
        set "name=%%~na"
        set "extension=%%~xa"
    )
    
    set splitFile=!name!!filenameCounter!!extension!
     
    for /f "tokens=*" %%a in (%file%) do (
        if !lineCounter! geq !limit! (
            set /a filenameCounter=!filenameCounter! + 1
            set splitFile=!name!!filenameCounter!!extension!
            echo Nouveau fichier !splitFile!
            set lineCounter=0
        )
        echo %%a>> !splitFile!
     
        set /a lineCounter=!lineCounter! + 1
    )
    
    pause

    sinon il faudrait nous donner un fichier exemple.

    Pour 7zip, il faut lancer 7zip d'abord, et dans 7zip, parcourir les fichiers + clic-droit.


    1
  4. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     

    Voilà en dupliquant le premier enregistrement contenant le nom des colonnes sur chaque fichier

    @echo off
    setLocal EnableDelayedExpansion
    set limit=2
    set file=splitcsv.csv
    set lineCounter=0
    set filenameCounter=1
     
    set name=
    set extension=
    for %%a in (%file%) do (
        set "name=%%~na"
        set "extension=%%~xa"
    )
    
    set col=
    
    set splitFile=!name!!filenameCounter!!extension!
     
    for /f "tokens=*" %%a in (%file%) do (
        if "!col!" == "" ( set col=%%a)
            
        if !lineCounter! gtr !limit! (
            set /a filenameCounter=!filenameCounter! + 1
            set splitFile=!name!!filenameCounter!!extension!
            echo !col! > !splitFile!
            echo Nouveau fichier !splitFile!
            set lineCounter=1
        )
        echo %%a>> !splitFile!
     
        set /a lineCounter=!lineCounter! + 1
    )
    
    pause

    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 477
     

    Bonjour,

    Eh bien je vais pas trouver mieux, je quitte le poste.


    0
  7. PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21
     

    Bonjour,

    Merci jee pee pour cette solution (*.bat) qui fonctionne bien  !

    Et Merci à  Le Pingou pour ta participation !

    Bonne journée !

    0