Copier plusieurs fichier dans un seul
Bonjour ,
Voici ma macro pour copier plusieurs fichier dans un mais sans succès. Merci de m'aider.
Sub recup()
Dim Classeur As Worksheet
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim Chemin As String
Dim Fichier As String
Chemin = "C:\Users\TREH004\Documents\Indexation PME\" 'saisir le chemin complet du dossier où se trouvent les fichiers
Fichier = Dir(Chemin & "*SEMAINE*.xlsm") ' Premier fichier
'feuille où seront collées les valeurs, adapter le nom...
Set Fe = ThisWorkbook.Worksheets("Suivi des activités")
Application.ScreenUpdating = False
Do While Fichier <> ""
Set Classeur = Workbooks.Open(Chemin & Fichier).Worksheets(2)
'ici, la plage est commune à tous les classeurs
[color=#FFFF40] Set Plage = Classeur.Range("C8:L8", Range("C8").End(xlDown)) --> ERREUR
[/color]
'recherche la 1ère cellule vide en colonne A
Set Cel = Fe.Cells(Rows.Count, 3).End(xlUp).Offset(1)
'si pour la 1ère fois la cellule se trouve au dessus de la cellule A6, défini A6 comme la cellule de départ
If Cel.Row < 7 Then Set Cel = Fe.Cells(7, 1)
'récup des valeurs
Fe.Range(Cel, Fe.Cells(Cel.Row + Plage.Rows.Count - 1, Plage.Columns.Count)).Value = Plage.Value
Workbooks.Open(Chemin & Fichier).Close savechanges:=False
Fichier = Dir ' Fichier suivant
Loop
End Sub
Bonjour,
Bon j'ai pas essayé mais déjà ça, je le sens pas :
Set Classeur = Workbooks.Open(Chemin & Fichier).Worksheets(2)
A mon avis tu peux essayer de faire
Set Classeur = Workbooks.Open(Chemin & Fichier)
With Classeur.Worksheets(2)
Set Plage = .Range("C8:L8", Range '...
A une vache près, ça doit résoudre ton problème...
Le problème c'est que tous tes Set ne résolvent rien : Quand tu Set une erreur ben ton Set Classeur il gobe ton erreur sans problème...
Par contre pour trouver le .End(xlDown)) de ton erreur : là VBA y couine...
Sans préjudice de tes Set ultérieurs... que je n'ai pas cherché à évaluer !
Personnellement je préfère mémoriser une variable avec le N° de dernière ligne : ça donne du code bien plus lisible que tes instances.
Mébon je suppose que c'est une question d'habitude... Si tu l'habitude programmer sous d'autres langages ça peut sans doute se concevoir mais dans ce cas : mef... "Set truc" peut bien renvoyer "Nothing" si tu t'en sers à la légère...
A+