Bonjour tout le monde et meilleurs voeux.
je fais une synthèse de 4 classeurs de 5 feuilles dans un classeur recap. Tous ces classeurs sont dans un même dossier dont le chemin est le suivant :
C:\Documents and Settings\xxxxxxxx\Bureau\VERO\Fusion\RECUPGLOBALE.
j'ai utilisé un code VBA de Jacques Boisgonthier que j'ai modifié comme ceci(salade maison )pour que toutes les feuilles de mes classeurs se copient l'une après l'autre dans les feuilles correspondantes de mon classeur récap :
Sub regrouper()
Dim ligne%
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("Chrono")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("Chrono").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("Chrono").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("Garanties reçues")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("Garanties reçues").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("Garanties reçues").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("Modif. ISO")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("Modif. ISO").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("Modif. ISO").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("recap MARS 10")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("recap MARS 10").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("recap MARS 10").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("recap Jany FEVRIER 10")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("recap Jany FEVRIER 10").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("recap Jany FEVRIER 10").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
End Sub
ça marche très bien.mais.....
1 - quand je clique sur mon bouton "rassembler tout" ça m'ouvre le premier fichier excel situé dans mes documents.(et bien sur ça bloque tout) Pour que ça marche je suis obligé à chaque fois d'enregistrer le fichier récap dans mon dossier d'origine. Comment corriger ça pour qu'il ouvre les classeurs qui sont dans le même dossier sans l'obligation d'enregisrer le ficher a chaque fois.
2 - j'ai recopier la macro autant de fois que j'avais de feuilles en les nommant à chaque fois. Je voudrais faire les modifs nécessaires pour que ça marche automatiquement avec un nombre N de classeurs tous identiques
et là bien sur j'ai besoin d'aide.
Le tout sera utilisé avec office 2007 voire office 2010
Avec tous mes remerciements.
je fais une synthèse de 4 classeurs de 5 feuilles dans un classeur recap. Tous ces classeurs sont dans un même dossier dont le chemin est le suivant :
C:\Documents and Settings\xxxxxxxx\Bureau\VERO\Fusion\RECUPGLOBALE.
j'ai utilisé un code VBA de Jacques Boisgonthier que j'ai modifié comme ceci(salade maison )pour que toutes les feuilles de mes classeurs se copient l'une après l'autre dans les feuilles correspondantes de mon classeur récap :
Sub regrouper()
Dim ligne%
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("Chrono")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("Chrono").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("Chrono").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("Garanties reçues")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("Garanties reçues").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("Garanties reçues").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("Modif. ISO")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("Modif. ISO").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("Modif. ISO").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("recap MARS 10")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("recap MARS 10").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("recap MARS 10").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
ChDir ActiveWorkbook.Path 'Chemin par défaut=emplacement du fichier "Récap"
Set recap = ThisWorkbook.Sheets("recap Jany FEVRIER 10")
recap.Range("A3:F65500").Clear
compteur = 3 'puisque ligne 1 = en-têtes
nf = Dir("*.xls") 'tous les fichiers Excel (dans le chemin par défaut) seront lus
Do While nf <> "" And nf <> ThisWorkbook.Name
Workbooks.Open Filename:=nf
For ligne = 3 To Workbooks(nf).Sheets("recap Jany FEVRIER 10").[A65000].End(xlUp).Row 'de la ligne 3 à la dernière cellule non-vide de a colonne A _
de la Feuil1 du fichier en cours de lecture
recap.Range("A" & compteur) = Left(nf, 15) ' en colonne A, indiquer les 5 premiers caractères du nom du fichier (=CP)
Workbooks(nf).Sheets("recap Jany FEVRIER 10").Range("A" & ligne & "" & ligne).Copy Destination:=recap.Range("B" & compteur)
'copier, en colonne B, les données des colonnes de A à F du fichier lu
compteur = compteur + 1
Next ligne
Workbooks(nf).Close False
nf = Dir
Loop
End Sub
ça marche très bien.mais.....
1 - quand je clique sur mon bouton "rassembler tout" ça m'ouvre le premier fichier excel situé dans mes documents.(et bien sur ça bloque tout) Pour que ça marche je suis obligé à chaque fois d'enregistrer le fichier récap dans mon dossier d'origine. Comment corriger ça pour qu'il ouvre les classeurs qui sont dans le même dossier sans l'obligation d'enregisrer le ficher a chaque fois.
2 - j'ai recopier la macro autant de fois que j'avais de feuilles en les nommant à chaque fois. Je voudrais faire les modifs nécessaires pour que ça marche automatiquement avec un nombre N de classeurs tous identiques
et là bien sur j'ai besoin d'aide.
Le tout sera utilisé avec office 2007 voire office 2010
Avec tous mes remerciements.