Copier des feuilles de source differente dans un classeur

Bonjour le Forum,

J'ai un problème que je n'arrive pas à le résoudre pour cela je fais appel à votre générosité dans l'espoir de m'aider

En fait, je souhaite regrouper plusieurs feuilles à partir de plusieurs classeurs enregistrés dans des emplacements différents mais qui ont tous le même nom ("Suivi Mensuel") dans un seul classeur (qui contient la macro) : donc l'objectif est d'avoir une macro qui va chercher les classeurs sources un par un, ouvrir chaque classeur, dupliquer la feuille "Suivi Mensuel" dans le classeur destination (qui contient la macro), la renommer en ajoutant 1, fermer le 1er classeur source et passer au 2ème classeur source et ainsi de suite jusqu'au terminer tous les fichiers sources....

j'ai essayé de commencer par le 1er fichier mais j'ai des erreurs :

 Sub Copie_feuille()

    Dim Fichier, Nomfeuille As String

    Set Fichier = "\\c:chemin1\Fichier de suivi1.xlsx"
    Set Nomfeuille = "Suivi Mensuel"
    Workbooks.Open Filename:=Fichier

    Sheets(Nomfeuille).Select
    Sheets(Nomfeuille).Copy After:=ThisWorkbook().Sheets(1)

    Fichier.Close

End Sub 

Une fois, le code fonctionne, j'espère le dupliquer plusieurs fois en changeant à chaque fois le chemin , mais je ne sais si c'est la bonne idée

D'avance, merci pour vos propositions

A+

bonjour,

à tester

Sub aargh()
    chemin = "c:\temp" 'chemin commun à tous les répertoires contenant un fichier de suivi
    rep = Dir(chemin & "\*", vbDirectory)
    While rep <> ""
      Fichier = chemin & "\" & rep & "\" & "Fichier de suivi1.xlsx"
      Nomfeuille = "Suivi Mensuel"
      On Error GoTo terreur
      Set wb = Workbooks.Open(Filename:=Fichier)
      On Error GoTo 0
      Sheets(Nomfeuille).Copy After:=ThisWorkbook().Sheets(1)
      wb.Close
ici:
      rep = Dir
    Wend
    Exit Sub
terreur:
    MsgBox "fichier " & Fichier & " non trouvé"
    Resume ici
End Sub

Bonjour h2so4 et merci beaucoup pour votre intérêt et proposition

votre code fonctionne bien cependant il ne réponds pas exactement à mon besoin : en fait, mes fichiers source ne sont pas stockés dans le même chemin, ni répertoire du coup je dois les chercher dans différents chemins un par un cependant je connais leurs noms tous (les noms de feuilles que je dois les récupérer sont invariables de chaque classeur source)

J'ai eu l'idée de mettre les chemins dans une feuille du classeur destination (celui qui contient la macro), est-il possible ?

ci-joint un exemple de fichier destination avec l'onglet 'Parametres' qui contient les chemins et les noms des classeurs sources

est-il possible de faire une macro qui va lire ces parametres et récupérer la feuille concernée de chaque classeur et la mettre dans la classeur destination

D'avance, merci pour votre aide

re-bonjour,

une version qui exploite la feuille "parametres"

Sub aargh()
    i = 2
    With ThisWorkbook.Sheets("parametres")
        While .Cells(i, 1) <> ""
                chemin = .Cells(i, 1)
                rep = .Cells(i, 2)
                Fichier = chemin & "\" & rep & "\" & .Cells(i, 3) & ".xlsx"
                Nomfeuille = "Suivi Mensuel"
                On Error GoTo terreur
                Set wb = Workbooks.Open(Filename:=Fichier)
                On Error GoTo 0
                Sheets(Nomfeuille).Copy After:=ThisWorkbook.Sheets(1)
                On Error GoTo terreur1
                ActiveSheet.Name = .Cells(i, 4)
                On Error GoTo 0
ici1:
                wb.Close False
ici:
            i = i + 1
        Wend
    End With
    Exit Sub
terreur:
    MsgBox "fichier " & Fichier & " non trouvé"
    Resume ici
terreur1:
    MsgBox "ne peut pas renommer feuille " & ActiveSheet.Name & " en " & .Cells(i, 4) & " car cette feuille existe déjà"
    Resume ici1
End Sub

edit version adaptée du code pour traiter 4 colonnes dans la feuille paramètres

Merci beaucoup pour cette proposition qui semble répondre exactement à mon besoin

cependant je ne comprends pourquoi la macro n'arrive pas à trouver les fichiers : j'ai un message m'indiquant que le fichier n'existe pas !!

Sachant que j'ai corrigé l'erreur de frappe dans la ligne suivante :

 Fichier = chemin & "\" & rep & "\" & .Cells(i, 3) & ".xlsx" 

en la remplaçant par la ligne suivante :

 Fichier = chemin & "\" & rep & "\" & .Cells(i, 2) & ".xlsx" 

mais j'ai toujours le même message d'erreur plusieurs fois (selon le nombre de fichiers recherchés) !!!

Avez vous une idée sur le problème qui peut expliquer ce phénomène

Merci

re-bonjour,

le code fourni exploite les données des colonnes A,B et C de la feuille "paramètres", si ton fichier ressemble à celui que tu as fourni, pas besoin de modifier le code.

j'ai corrigé un bug dans le code fourni précédemment mais qui n'est pas lié au problème que tu mentionnes. le problème que tu rencontres doit être lié au fait qu'il ne trouve pas le fichier ou qu'il détecte une erreur au moment de l'ouverture du fichier. vérifie bien le nom du fichier.

Re-bonjour,

Oui, oui effectivement c'est ma faute je me suis trompé

Désormais le code fonctionne bien mais comme il Excel demande à chaque fois si je veux enregistrer les modifications apportées aux classeurs source (malgré que je n'ai rien modifié), est-il possible de rajouter une instruction pour qu'il ferme les classeurs source sans les enregistrer automatiquement

En plus est ce que je peux définir les nouveaux noms des feuilles copiées dans le classeur destination au niveau de la colonne 4 de l'onglet paramètres ==> Dans ce cas la macro doit renommé chaque feuille copiée avec le nom correspondant dans la colonne D ?

Merci d'avance

bonsoir,

j'ai adapté le code, voir plus haut.

Bonjour,

Désolé pour le retard mais je voudrais vous remercier pour votre effort

le code fonctionne correctement

Bravo

A+

Rechercher des sujets similaires à "copier feuilles source differente classeur"