Ventiler mon fichier .csv en plusieurs fichiers .csv

killer89 Messages postés 9 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 15 janvier 2015 - 15 oct. 2013 à 00:28
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 15 oct. 2013 à 14:59
Bonjour,

Je possède un fichier CSV d'une colonne qui contient plus de 5000 lignes et je voudrais créer des nouveaux fichiers CSV avec 249 lignes max à chaque fois dans chaque fichiers. Je n'arrive pas à trouver de solutions à part le faire à la main.. autant dire que c'est un travail pire que laborieux.

Merci d'avance à ceux qui m'aideront !

Bonne journée :)
XeNoN

5 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
15 oct. 2013 à 00:49
Bonjour.
Bouclez sur les lignes de votre fichier.
Copier chaque ligne dans un nouveau fichier jusqu'à atteindre 243 lignes copiées puis créer un nouveau document et poursuivre avec la même logique. ..

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 oct. 2013 à 06:04
Bonjour,
Un seul fichier ? soit environ 20 copies/collers ?
Ecrire un programme pour ne servir qu'une fois et pour si peu est quelque peu abusif et une manière de détourner la vocation de l'informatique, qui est celle de remplacer par des programmes des tâches répétitives et fréquentes.
Je rappelle que l'on trouve sur la toile une floppée d'outils gratuits qui font la chose
0
killer89 Messages postés 9 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 15 janvier 2015
15 oct. 2013 à 09:08
J'ai cette manipulation à faire sur 6 fichiers dont 1 fichier avec 35 000 lignes d'où ma demande :) Tout en sachant que je suis un total novice en matière de code.

Pouvez-vous m'aider svp ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 oct. 2013 à 10:20
Tu trouveras ici de l'aide, mais pas de code écrit sans que tu n'aies toi-même fait le moindre effort.

Ouvre ton aide VBA sur l'instruction Open et sur le mot Line Input

Il te faudra, comme te l'a exposé plus haut jordane45 (que je salue) - lire en boucle les lignes de ton fichier
- utiliser un compteur
- écrire dans un autre fichier la chaîne "lue" jusqu'à la limite du compteur. Et donc nécessairement créer un mécanisme de nommage du fichier ainsi créé, pour chaque tranche du fichier originel.

Comme tu le vois, ton problème n'est pas une difficulté spécifique parfaitement isolée (relire les règles de ce forum), mais un ensemble de difficultés distinctes à résoudre.

Reviens avec ton code d'essai si encore en difficulté malgré cette lecture

En te rappelant à nouveau que, si tu ne souhaites pas développer, tu as toujours la possibilité d'utiliser l'un des nombreux outils gratuits d'éclatement de fichiers que l'on trouve sur la toile.
0

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

Posez votre question
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 15/10/2013 à 15:06
Bon..aller...
J'avais quelques minutes à tuer...


Voici un exemple de ce qui est faisable :
(sous Excel)

Sub splitCSVFile()
'**************************
'      VARIABLES
'**************************
Dim nblMAX As Integer
    nblMAX = 249
Dim Nbl As Integer
Dim CsvFile As String
Dim numFile As Integer
Dim compteur As Integer
    compteur = nblMAX
Dim cls As Workbook
Dim cls2 As Workbook
'---------------------------
'Ouverture du fichier CSV
'---------------------------
  CsvPath = "D:\"
  CsvName = "test.csv"
   Workbooks.Open Filename:=CsvPath & CsvName, Local:=True, Delimiter:=";"
  Set cls = Workbooks(CsvName)
'---------------------------
' Nombre de lignes dans le fichier CSV
'---------------------------
  Nbl = Derniere_Ligne(ActiveSheet.Name)
'---------------------------
' > Boucle sur les lignes
' + Incrementation compteur
' + recopie des lignes
'---------------------------
 For l = 1 To Nbl
    If compteur = nblMAX Then
     'creation classeur
        Workbooks.Add
        Set cls2 = ActiveWorkbook
        compteur = 1
    End If
    'recopie de la ligne
     cls.Activate
     ActiveSheet.Rows(l).Copy
     cls2.Activate
     Rows(compteur).Select
     ActiveSheet.Paste
     
    'on incrémente le compteur
    compteur = compteur + 1
 Next
  
End Sub

Function Derniere_Ligne(Nom_Feuille As String) As Long 
 Sheets(Nom_Feuille).Activate
 Derniere_Ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row 'pour les lignes
End Function



Il te reste à enregistrer les fichiers ainsi créés et à les fermer automatiquement...

Mais là.. je te laisse chercher un peu.. le plus "dur" est fait.



Cordialement,
Jordane
0
Rejoignez-nous