Hi!Fusionner deux classeurs Excel

Je dispose de deux dossiers. Chaque dossiers contient le même nombre de fichiers (100) avec des noms identiques :

Dossier 1 : abc.xlsx, fgr.xlx,...

Dossier 2: abc.xlsx, fgr.xlx,...

J'aimerais fusionner les fichiers de même nom. (abc.xlsx avec abc.xlsx).

Sub SelectFolder()
    Set fso = CreateObject("Scripting.FileSystemObject")

    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then ' if OK is pressed
            folderpath = .SelectedItems(1)
            Set sFolder1DB = fso.GetFolder(folderpath)

        End If
    End With

     With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then ' if OK is pressed
            folderpath = .SelectedItems(1)
            Set sFolder1TB = fso.GetFolder(folderpath)

        End If
    End With

    If sFolder1DB <> "" And sFolder1TB <> "" Then ' if a file was chosen
        For Each DBsheet In sFolder1DB.Files

            For Each TBsheet In sFolder1TB.Files
            Debug.Print DBsheet
            Debug.Print TBsheet
                If DBsheet.Name = TBsheet.Name Then

                    Workbooks.Open FileName:=DBsheet.Path

                    Workbooks(DBsheet).Sheets("Database").Copy _
                    Before:=Workbooks(TBsheet).Sheets(1)

                    Workbooks.Close

                    End If
            Next
        Next

    End If

End Sub

J'obtiens l'erreur "mismatch 13" sur cette ligne. J'imagine que c'est parce que le classeur de destination n'est pas ouvert. Mais comme les noms sont identiques (abc.xlsx et abc.xlsx), je ne peux pas les ouvrir en même temps.

Workbooks(DBsheet).Sheets("Database").Copy _

Before:=Workbooks(TBsheet).Sheets(1)

Pouvez-vous svp m'aider à fusionner ces fichiers?

Merci

Bonjour et sur le forum,

Une idée serait d'utiliser un classeur temporaire pour stocker la feuille en question, tu ouvres ton premier classeur, tu copies la feuille dans un nouveau classeur avec un nom automatique, tu ouvres ton second classeur, et tu copies la feuille dessus, puis tu fermes le classeur temporaire, tu enregistres et tu passes à la suite.

Une piste:

Sub Macro1()
Dim Wkb As Workbook
Dim Wks As Worksheet
Dim nomFichier As String

'ouverture d'un fichier et copie de sa première feuille
nomFichier = Application.GetOpenFilename
Set Wkb = Workbooks.Open(nomFichier)
Wkb.Sheets(1).Copy

'Fermeture du classeur d'origine
Wkb.Close
Set Wkb = Nothing

'copie de la feuille du classeur temporaire
Set Wks = ActiveSheet
Wks.Copy before:=ThisWorkbook.Sheets(1)

'fermeture du fichier temporaire
Application.DisplayAlerts = False
Wks.Parent.Close
Set Wks = Nothing
Application.DisplayAlerts = True
End Sub

ça permet de copier la première feuille d'un classeur Excel que tu choisis, ferme le classeur choisi, copie la feuille dans le classeur temporaire vers ton classeur actif, et ferme le classeur temporaire.

Comme tu passes par un nouveau classeur, tu peux laisser ce classeur ouvert et ouvrir l'autre, les noms ne rentreront plus en collision.

Rechercher des sujets similaires à "fusionner deux classeurs"