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 SubBonjour 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
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 Subedit 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+