Fusionner plusieurs fichiers CVS un seul fichier excel

Fusionner plusieurs fichiers CVS un seul fichier excel - VB/VBA/VBS - Programmation

Marsh Posté le 18-05-2012 à 17:06:37    

Bonjour à tous,
 
Pour une tache assez récurrente, je souhaiterai disposai d'une macro qui me permettrai de fusionner plusieurs fichiers excel dans un seul fichier, sachant que ces fichiers ont le même nombre de colonne mais par forcément le même nombre de lignes.
 
Quelqu'un pourrait-il m'aider?
 
Je me débrouille plutôt bien avec excel, mais en vba pas encore assez performant.
 
Merci pour vos réponses.
 
Cdt
 
Salem
 
 
 
 


---------------
Salem
Reply

Marsh Posté le 18-05-2012 à 17:06:37   

Reply

Marsh Posté le 18-05-2012 à 18:35:53    

Salut, à adapter à ton contexte, c'est une version qui fonctionne même si elle m'apparait un peu bestiale
Affecter un bouton à la procédure SelDossierCSV
 
J'ai supposé qu'il s'agissait de fichiers CSV et non CVS.

Option Explicit
 
Private Sub ConcatenationCSV(sDossier As String)
Dim Wkb As Workbook
Dim sChemin As String, sFichier As String
Dim LastRow As Long, iRow As Long
Dim c As Range, Ar() As String
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


Message édité par kiki29 le 18-05-2012 à 22:56:29

---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
Reply

Marsh Posté le 22-05-2012 à 11:41:40    

Bonjour
 
j'ai testé le code.
 
CA fonctionne très bien.
 
Merci infiniment pour ton aide.
 
Je vais désormais gagné beaucoup de temps.
 
cdt
 
Salem
 

Reply

Marsh Posté le 24-04-2019 à 07:47:32    

Bonjour à tous,
 
Je déterre un vieux message concernant la fusion de fichiers CSV. J'ai tenté d'utiliser la macro ci-dessus. elle fonctionne correctement jusqu'au moment où une cellule comporte une virgule ",". Tout s'efface après la virgule jusqu'à la ligne suivante.
J'ai essayé de remplacer les virgules par des traits "-" avant le split mais je n'y arrive pas.
J'ai mis l'instruction c.value= replace(c, ",", "-" ).
Une bonne âme pourra elle m'aider. Merci à tous.

Reply

Marsh Posté le 08-07-2019 à 21:55:07    

si tous les fichiers CSV sont dans le mème répertoire, une ligne de commande permet de le faire encore plus simplement
 
copy *.csv result.csv

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed