Fusion de plusieurs fichier Excel

Bonjour chers tous;

je dispose de fichiers excel de même contenu et même disposition:

je les ai nommé 01; 02; 03... comment les fusionner directement pour m'éviter de copier-coller à chaque fois dans une feuille?

Je ne m'y connais pas en VBA mais s'il vous plait un programme d'automatisation m'aiderait beaucoup.

Merci pour l'appui

101-30-ns.xlsx (30.54 Ko)
406-10.xlsx (351.85 Ko)
211-13.xlsx (233.42 Ko)
101-05.xlsx (320.33 Ko)

Bonjour Franck00225 et bienvenue,

voici un exemple, en supposant que le fichier récapitulatif se nomme "Recap"

et que tous les fichiers (fichier "Recap" inclus) soient dans le même répertoire.

copie la macro suivante sur le module1 du fichier Recap.xlsm

'il faut activer la référence: Microsoft ActiveX Data Objects xx Library --> au menu vba, Outils, Référence

Sub Read_File()
Dim Repertoire As String, Fichier As String, Fich As String, NomFeuille As String
Dim Ligne As Long, f
Dim fso As Object, sfofolder As Object, oFile As Object
Dim Cnn As Object, Rst As ADODB.Recordset

'--- derniere ligne de la feuille active, les données seront transférées à cette endroit ---
Ligne = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row + 1

'--- répertoire des fichiers "audit" est le même que le répertoire du fichier Récap---
Repertoire = ThisWorkbook.Path

'--- nom de la feuille des fichiers "audit"---
NomFeuille = Sheets(1).Name

Set fso = CreateObject("Scripting.FileSystemObject")
Set sfofolder = fso.GetFolder(Repertoire)

 For Each oFile In sfofolder.Files
     f = Split(oFile, "\")
     Fich = f(UBound(f))

     '--- lire uniquement les fichiers dont le nom est différent de Recap
     If Fich <> "Recap" Then  'à adapter

        Set Cnn = New ADODB.Connection

        '--- Connexion ---
        With Cnn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
        & oFile & ";Extended Properties=""Excel 12.0;HDR=NO;"""
        .Open
        End With

        '--- récupérer les données --

        Set Rst = Cnn.Execute("SELECT * FROM [" & NomFeuille & "$A:N" & "]")      'adapter la plage de colonne
        Cells(Ligne, "A") = Fich
        Cells(Ligne, "B").CopyFromRecordset Rst
        Rst.Close
        Ligne = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row + 1

    End If
 Next oFile
Cnn.Close
Set Rst = Nothing
Set Cnn = Nothing
End Sub

Merci i20100 ,

je tente d'écrire ce programme

Bonjour et bienvenue sur le forum

Bonjour à tous

Une variante.

Tous les fichiers doivent être dans le même dossier.

Bye !

Bonjour,

Je te propose une autre solution.

Celle ci nécessite que tu installes Power Query pour ta version Excel.

https://www.microsoft.com/fr-FR/download/details.aspx?id=39379

C'est un complément Microsoft gratuit à télécharger et à installer.

Après installation, décompresse l'archive et ouvre le fichier Consolidation.xlsm.

Dans la feuille Paramètres, clique sur le bouton Actualiser.

Sinon, un extrait du résultat dans le fichier joint.

Les colonnes vides ont été supprimées.

A te relire.

Cdlt.

3dossier-csv.zip (261.11 Ko)

Merci Eric,

vu qu'il s'agit d'un brin de données parmi plusieurs, je voulais changer la source de données pour suivre le même processus pour les autres, mais la feuille "paramètre" est protéger par un mot de passe.

Bonjour et bienvenue sur le forum

Bonjour à tous

Une variante.

Tous les fichiers doivent être dans le même dossier.

Bye !

Merci GMB,

mais vu que je ne m'y connais pas en VBA, comment adapter la macro à d'autres fichiers dans le programme?

Re,

La feuille est protégée mais sans mot de passe !...

Elle protège la formule qui donne le chemin d'accès du dossier.

Cdlt.

Bonjour

Et encore un multipost !

On se décarcasse des 2 (ou plus...) côtés...

Rechercher des sujets similaires à "fusion fichier"