Bonjour à tous,

Je m'explique,

J'ai besoin de créer une macro qui regrouperait plusieurs fichiers avec divers onglets.
J'ai 4 onglets de plusieurs fichiers que je dois regrouper dans un même fichier. A savoir que l'onglet "1" de la feuille regroupée doit aller sur l'onglet "1" de la feuille de regroupement et ainsi de suite.

Il y a plusieurs problèmes sur ma macro qui font que tout ne se passe pas très bien.

Dans un premier temps, la macro s'execute mais me regroupe que quelques fichiers... Je ne comprends pas pourquoi cela se passe. Elle trouve donc bien les fichiers mais en saute...

Le second problème est que la macro ne me reprend pas toutes les informations des différents onglets. Elle saute des lignes...

Pouvez vous m'aider, à savoir que j'ai essayé de m'inspirer de ce que j'ai trouvé sur le net...

Merci d'avance...

Voici la macro :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  Dim chemin As String    ' classeur regroupé
    Dim rep As String       ' répertoire à traiter
    Dim fic As String       ' classeur regroupé
    Dim ligne As Long       ' ligne écriture
    Dim nbc As Integer      ' nombre de classeurs
    Dim nbf As Integer      ' nombre de feuilles
    Dim nbl As Integer      ' nombre de lignes
    Dim c As Integer        ' nombre de colonnes
    Dim l As Long           ' ligne lecture
    Dim Wf As Worksheet     ' feuille regroupement
    Dim Wl As Worksheet     ' feuille regroupée
    rep = ThisWorkbook.Path & "\"
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
 
    Set Wf = ThisWorkbook.ActiveSheet         ' variable feuille groupe
    Wf.Cells.ClearContents
 
    ligne = 1
 
    fic = Dir(rep & "*.xls")    ' recherche fichiers
    While fic <> ""
        If fic <> ThisWorkbook.Name Then
            chemin = rep & fic       ' chemin fichiers
            Workbooks.Open chemin, 0  ' ouverture
 
 
            i = 2
 
               Set Wl = Workbooks(fic).Sheets(i)  ' choix de la feuille
               nbl = Workbooks("global process de fabrication").Sheets("Codes articles concernés").UsedRange.Rows.Count
               c = Workbooks("global process de fabrication").Sheets("Codes articles concernés").UsedRange.Columns.Count
               Sheets("Codes articles concernés").Select
               If ligne > 2 Then l = 2 Else l = 1  ' une seule fois le titre
               Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Workbooks("global process de fabrication").Sheets("Codes articles concernés").Cells(ligne, 1)
               ligne = ligne + nbl - l + 1
               nbf = nbf + 1
 
 
 
           i = 3
               ligne = 1
               Set Wl = Workbooks(fic).Sheets(i)  ' choix de la feuille
               nbl = Workbooks("global process de fabrication").Sheets("Nomenclatures AC").UsedRange.Rows.Count
               c = Workbooks("global process de fabrication").Sheets("Nomenclatures AC").UsedRange.Columns.Count
               Sheets("Nomenclatures AC").Select
               If ligne > 2 Then l = 2 Else l = 1  ' une seule fois le titre
               ligne = ligne + nbl - l + 1
               Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Workbooks("global process de fabrication").Sheets("Nomenclatures AC").Cells(ligne, 1)
               nbf = nbf + 1
 
           i = 4
               ligne = 1
               Set Wl = Workbooks(fic).Sheets(i)  ' choix de la feuille
               nbl = Workbooks("global process de fabrication").Sheets("Processus de fabrication").UsedRange.Rows.Count
               c = Workbooks("global process de fabrication").Sheets("Processus de fabrication").UsedRange.Columns.Count
               Sheets("Processus de fabrication").Select
               If ligne > 2 Then l = 2 Else l = 1  ' une seule fois le titre
               ligne = ligne + nbl - l + 1
               Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Workbooks("global process de fabrication").Sheets("Processus de fabrication").Cells(ligne, 1)
               nbf = nbf + 1
 
            i = 5
               ligne = 1
               Set Wl = Workbooks(fic).Sheets(i)  ' choix de la feuille
               nbl = Workbooks("global process de fabrication").Sheets("Parc TF").UsedRange.Rows.Count
               c = Workbooks("global process de fabrication").Sheets("Parc TF").UsedRange.Columns.Count
               Sheets("Processus de fabrication").Select
               If ligne > 2 Then l = 2 Else l = 1  ' une seule fois le titre
               ligne = ligne + nbl - l + 1
               Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Workbooks("global process de fabrication").Sheets("Parc TF").Cells(ligne, 1)
               nbf = nbf + 1
 
 
 
 
                ActiveWorkbook.Close SaveChanges:=False   ' Fermeture du classeur
 
        End If
        fic = Dir
        nbc = nbc + 1
    Wend
fin:
    MsgBox nbc & " classeurs regroupés avec " & nbf & " feuilles et " & ligne & " lignes"
 End Sub
Sub regroupe()