Bonjour,
Je me permets de vous solliciter car je rencontre une difficulté dans l’établissement d’une macro ; en effet je me rend compte que sans pratique on oublie vite…. Ma cible est la suivante :
J'ai 250 fichiers Excel dans un répertoire contenant un nombre variable d’onglets (jusqu’à 25), tous les onglets ayant la même structure, je dois compiler le contenu de tous ces onglets dans un fichier destination sur un seul onglet.
Après recherches sur le forum j'ai trouvé le code ci-dessous qui répond parfaitement à mon besoin (je me suis d'ailleurs permis de le commenter pour assurer ma bonne compréhension), à un détail près c'est qu'il n'intervient que sur le premier onglet, il me faut réaliser une boucle pour traiter tous les onglets... et c'est là que je bloque... vous serait il possible de m'orienter?
De plus dans la ligne de compilation je ne comprends la fonction Resize(derligne - 2, 27) je serais preneur de son utilité.
Un grand merci de votre aide
Benoit
Je me permets de vous solliciter car je rencontre une difficulté dans l’établissement d’une macro ; en effet je me rend compte que sans pratique on oublie vite…. Ma cible est la suivante :
J'ai 250 fichiers Excel dans un répertoire contenant un nombre variable d’onglets (jusqu’à 25), tous les onglets ayant la même structure, je dois compiler le contenu de tous ces onglets dans un fichier destination sur un seul onglet.
Après recherches sur le forum j'ai trouvé le code ci-dessous qui répond parfaitement à mon besoin (je me suis d'ailleurs permis de le commenter pour assurer ma bonne compréhension), à un détail près c'est qu'il n'intervient que sur le premier onglet, il me faut réaliser une boucle pour traiter tous les onglets... et c'est là que je bloque... vous serait il possible de m'orienter?
De plus dans la ligne de compilation je ne comprends la fonction Resize(derligne - 2, 27) je serais preneur de son utilité.
Un grand merci de votre aide
Benoit
Code:
Sub Compilation()
'bloque l'affichage
Application.ScreenUpdating = False
'defini la variable compil comme le classeur actif
Set Compil = ThisWorkbook
'efface les precedents traitements
Compil.Sheets(1).Range("A1:AA50000").Clear
'defini le répertoire actif
chemin = Compil.Path & "\"
'defini monFichier comme le repertoire et le fichier excel
monFichier = Dir(chemin & "*.xlsx")
'fait tourner la boucle tant que le nom de fichier est pas vide
Do While monFichier <> ""
' si le fichier traité est différent du fichier des destination alors
If monFichier <> Compil.Name Then
'ouverture du fichier à traiter
Set f = Workbooks.Open(chemin & monFichier)
'se place à la dernier ligne complete du premier onglet du fichier à traiter
derligne = f.Sheets(1).Range("A65000").End(xlUp).Row
'insere le nom du fichier en colone A (pour l'instant c'est du luxe aussi je le met de coté)
'Compil.Sheets(1).Range("A65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 1).Value = monFichier
'se place sur le premier onglet et copie de A4 à AA"derniere ligne active et compile dans le fichier de destination"
f.Sheets(1).Range("A4:AA" & derligne).Copy _
Compil.Sheets(1).Range("A65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 27)
'ferme le fichier traité
f.Close
'fin de la boucle
End If
monFichier = Dir
Loop
'debloque l'affichage
Application.ScreenUpdating = True
End Sub