Diviser un fichier en fichier de 1000 lignes avec un nom différent

Pygos691

XLDnaute Nouveau
Bonjour,

J'ai un fichier au format csv (excel avec point virgule), qui contient 780000 lignes que je désire diviser en fichiers de 1000 lignes chacun....

Chaque fichier devra garder le même titre de colonnes et le même format "Texte" - colonne A.

Ci-joint un fichier de 3000 lignes...


Merci d'avance,
 

Pièces jointes

  • ARR3000.xlsx
    118 KB · Affichages: 69

MJ13

XLDnaute Barbatruc
Re : Diviser un fichier en fichier de 1000 lignes avec un nom différent

Bonjour à tous

Pour ce genre de problème, on peut très facilement utiliser OPEN avec un line Input et Print #1 par exemple comme quand on écrit un fichier texte en basic classique (ex: Gwbasic).

exemple issu de l'aide:

Code:
Le code suivant ouvre le fichier FICHTEST en mode de lecture séquentielle.

Open "FICHTEST" For Input As #1
' Ferme le fichier avant de l'ouvrir à nouveau dans un autre mode.
Close #1
 

MJ13

XLDnaute Barbatruc
Re : Diviser un fichier en fichier de 1000 lignes avec un nom différent

Bonjour Roland

Désolé, mais hier, je n'ai pas vu ton fichier que j'ai testé ce matin et qui fonctionne très bien :).

Sinon voici , un code que j'ai fait ce matin, le sujet m'intéressant.

Code:
Sub Dispatche_Fichier_CSV_En_N_Fichiers()
Close
'Mettre ce fichier et le fichier .Csv dans le même dossier

'Possibilité de mettre un Inputbox en copiant collant de l'explorateur le nom du fichier (F2)
NomFich = "ARR3000" ' Inputbox("Nom du fichier (sans le .csv)?")

'Nombre de lignes pour la découpe
NombreLigneCoupe = 1000

N = 1 'Compteur Fichier N
Open ThisWorkbook.Path & "\" & NomFich & ".csv" For Input As #1

i = 0 'Compteur ligne

Open ThisWorkbook.Path & "\" & NomFich & "N" & N & ".csv" For Output As #2
'Recherche Entête
 Line Input #1, a$
 Entête = a$
 Print #2, Entête
 
Do While Not (EOF(1))
 i = i + 1
 Line Input #1, a$
 'MsgBox a$
 Print #2, a$
 If i = NombreLigneCoupe Then Close #2: i = 0: N = N + 1: Open ThisWorkbook.Path & "\" & NomFich & "N" & N & ".csv" For Output As #2: Print #2, Entête
Loop

'Ferme tous les fichiers textes
Close

'si il y a un nombre d'enregistrement de  3000 (ou 2000, 4000 ...), on doit supprimer
'le dernier fichier qui n'aura que l'Entête dans le fichier
If i = 0 Then Kill ThisWorkbook.Path & "\" & NomFich & "N" & N & ".csv"
End Sub
 

Pièces jointes

  • Coupe_Fichier_Csv_MJ.xlsm
    15.9 KB · Affichages: 32
  • ARR3000.zip
    27.9 KB · Affichages: 29

Discussions similaires

Statistiques des forums

Discussions
312 410
Messages
2 088 165
Membres
103 752
dernier inscrit
FG2