Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

excelator2015

XLDnaute Nouveau
Bonjour,

Je souhaiterais fusionner plusieurs centaines de fichiers csv dans un seul fichier excel. Au total j'aurai plus d'1 million de lignes.

J'ai trouvé ce programme sur internet, je l'ai essayé sur excel 2000 et 2013 et dans les deux cas il s'arrête à 65635 lignes !

Const sSeparateur As String = ";"

Application.ScreenUpdating = False

sChemin = sDossier & "\"
sFichier = Dir$(sChemin & "*.csv")

Feuil1.Cells.Clear
Do While Len(sFichier) > 0

Set Wkb = Workbooks.Open(sChemin & sFichier)
LastRow = Wkb.Sheets(1).Cells(Wkb.Sheets(1).Rows.Count, 1).End(xlUp).Row

With Feuil1
For Each c In Wkb.Sheets(1).Range("A1:A" & LastRow)
iRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Ar = Split(c, sSeparateur)
.Range(.Cells(iRow, 1), .Cells(iRow, UBound(Ar) + 1)).Value = Ar
Next c
End With

Wkb.Close
Set Wkb = Nothing

sFichier = Dir$()
Loop
Application.ScreenUpdating = True
End Sub

Sub SelDossierCSV()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path & "\"
.Title = "Dossier CSV à traiter"
.AllowMultiSelect = False
.ButtonName = "Sélection Dossier"
.Show
If .SelectedItems.Count > 0 Then
DoEvents
ConcatenationCSV .SelectedItems(1)
End If
End With
End Sub


Je sais qu'excel 2000 est limité à 65000 lignes mais ce que je ne comprends c'est que s'arrête également à 65000 sur excel 2013.

Merci par avance de vos lumières et de votre aide !
 
Dernière modification par un modérateur:

Efgé

XLDnaute Barbatruc
Re : URGENT - Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Bonjour

Peut être :
Change
Code:
LastRow = Wkb.Sheets(1).Cells(Wkb.Sheets(1).Rows.Count, 1).End(xlUp).Row
par
Code:
LastRow = Wkb.Sheets(1).Cells(Application.Rows.Count, 1).End(xlUp).Row

Et
Code:
iRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
par
Code:
iRow = .Cells(Application.Rows.Count, 1).End(xlUp).Row + 1

Cordialement
 

excelator2015

XLDnaute Nouveau
Re : URGENT - Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Merci,
Je vais essayer ce soir sur excel 2013

Comment fait-on pour ne pas recopier la 1ere ligne d'en tête de colonne de chaque fichier csv ?
 
Dernière modification par un modérateur:

ERIC S

XLDnaute Barbatruc
Re : URGENT - Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Bonjour

peut-être sans rapport mais sait-on jamais :
mon épouse m'appelle hier car elle reprend un fichier d'une stagiaire et n'arrive pas à dépasser les 256 colonnes.
Cause : fichier .xls
Remède : enregistrer en .xlsx (ou .xlsm)
 

excelator2015

XLDnaute Nouveau
Re : URGENT - Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

J'ai procédé aux changements, mais la ligne : iRow = .Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
me fait une erreur d’exécution 1004.

J'ai laissé la version précédente pour cette ligne, j'ai remplacé la première mais ça s'arrête à 65000 quand même.

A partir de fichier xlsm, ça ne change rien.

Sinon on peut partir d'une toute nouvelle macro.
 

excelator2015

XLDnaute Nouveau
Re : URGENT - Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Le code marche avec un fichier xlsm ! j'ai dépassé les 65000 lignes!

Toutefois, est-il possible de ne pas recopier la première ligne d'entête de colonne pour chaque fichier ?

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : URGENT - Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Bonsoir à tous

EDITION: pour l’entête, il suffit de modifier ainsi non ??
For Each c In Wkb.Sheets(1).Range("A2:A" & LastRow)

excelator2015 [Bienvenue sur le forum]
Fais ce simple test avec la macro ci-dessous dans un classeur vierge
Code:
Sub test()
Dim LastRow&
Sheets(1).Cells.Clear
Sheets(1).Cells(1, 1).Resize(Int((Rnd * Hour(Time) * Minute(Time)) * Second(Time)) + 1) = "=ROW()*COLUMN()"
LastRow = Sheets(1).Cells(Application.Rows.Count, 1).End(xlUp).Row
MsgBox "Première ligne non vide en colonne A : " & LastRow & vbNewLine & _
"Nombre de lignes de la feuille : " & Format(Application.Rows.Count, "#,##0")
End Sub
1) tu enregistres le classeur en XLS
puis tu testes la macro
2) tu enregistres le classeur en XLSM
puis tu testes la macro

Normalement tu devrais constater une différence, non ?

NB: Petit rappel au passage
extrait de la charte du forum
2 – Tous les membres du forum répondent gracieusement aux questions. Il n’y a donc aucune obligation de résultat et de délai. Les mots URGENT, SOS, AU SECOURS sont donc à bannir.
 

excelator2015

XLDnaute Nouveau
Re : URGENT - Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

J'ai quand même un petit souci, mes fichiers csv ont des jeux de caractères différents. J'ai des gribouillis pour les accents et les "ç".
Y a t il une méthode pour tout harmoniser ?

Cordialement,
 

excelator2015

XLDnaute Nouveau
Re : Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

C'est à dire faire en sorte que tous les fichiers puissent être convertis avec le même jeu de caractère pour éviter des gribouillis dans les lignes (les accents, les cédilles..).

Ou alors harmoniser le fichier final avec un même jeu de caractère.
 
Dernière modification par un modérateur:

Staple1600

XLDnaute Barbatruc
Re : Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Bonjour à tous

excelator2015
Tu as déjà la réponse à ta dernière question, non ?
J'ai trouvé ce programme sur internet

Il te suffit donc de faire chauffer le moteur de recherche de ton choix

Donc une exemple parmi pleins après un petit G..gling
excel - Merge many CSV files - Stack Overflow
Voir la macro nommée Public Sub CombineCSVsInFolder()

NB: Personnellement je m'en vais tester les scripts Powershell qu'on peut lire plus haut dans le lien cité.
 

MJ13

XLDnaute Barbatruc
Re : Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Bonjour à tous

Il me paraît difficile de répondre à une question sans fournir un fichier .csv sans données confidentielles représentant le problème.

Sinon, avec ce genre de problème cela peut durer jusque la nuit des temps .
 

excelator2015

XLDnaute Nouveau
Re : Fusion de fichiers csv dans un seul fichier à plus de 1 000 000 lignes

Oui le programme marche pour la fusion des fichiers csv. Mais le problème c'est que ces fichiers ont des jeux de caractères différents car ils proviennent de sources différentes.

Du coup sur le fichier fusionné j'ai parfois sur certaines lignes des gribouillis pour les accents et les cédilles etc
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…