Compilation de fichier sur tous les onglets

Ben78

XLDnaute Nouveau
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

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
 

Dranreb

XLDnaute Barbatruc
Re : Compilation de fichier sur tous les onglets

Dans la boucle interne puisqu'il faut que Feui soit défini, mais avant le Copy des NbL lignes.
N'oubliez pas, après, de déplacer PlgDest, d'une seule ligne probablement, avec Offset comme pour les NbL après le Copy.
 

Discussions similaires

Réponses
3
Affichages
524

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01