Scinder 1 fichier au format csv en plusieurs fichiers csv

Résolu/Fermé
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 - 5 sept. 2022 à 16:31
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 - 6 sept. 2022 à 10:40

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

A voir également:

6 réponses

Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 452
5 sept. 2022 à 16:41

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
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 21
Modifié le 5 sept. 2022 à 17:09

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
jee pee Messages postés 40558 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 décembre 2024 9 458
Modifié le 5 sept. 2022 à 16:44

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
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 21
Modifié le 5 sept. 2022 à 17:09

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
jee pee Messages postés 40558 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 décembre 2024 9 458
5 sept. 2022 à 19:05

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
jee pee Messages postés 40558 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 décembre 2024 9 458
5 sept. 2022 à 19:22

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

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

Posez votre question
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 452
5 sept. 2022 à 20:13

Bonjour,

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


0
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 21
Modifié le 6 sept. 2022 à 10:41

Bonjour,

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

Et Merci à  Le Pingou pour ta participation !

Bonne journée !

0