Bonjour,
étant un novice en VBA je souhaite faire une opération qui me semble complexe.
un précédent sujet ici m'avait déjà permis de pouvoir faire des synthèses sur plusieurs feuilles, mais aujourd’hui je n'arrive pas à l'adapter à mon nouveau cas.

En Fait j'ai un classeur qui contient plusieurs feuilles crées avec le code dont voici un extrait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Sheets("Article").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
   Sheets(Worksheets.Count).Name = TextBox1.Value
ceci génère progressivement des feuilles avec des CodeName de la forme Article1, Article2, Article3, .... Article*n, et les noms des feuilles à mon choix via une userform
jusque là tout va bien.
j'ai également dans mon classeur une feuille synthèse et ;
j'aimerai par macro via un bouton récupérer le nom de toutes les feuilles articles et les mettre dans la colonne A (à partir de A7) de ma feuille Synthèse ensuite sur la même ligne de cet article, j'aimerai également récupérer les valeurs de différentes cellules de la dernière ligne non vide de ces différentes feuilles Article1, Article2, Article3, .... Article*n .

Ci-dessous le code (pris d'un sujet Résolu par ARTURO83) que j'ai essayé d'adapté sans résultat :

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
Private Sub CmdValider_Click()
Dim a As Long
    Dim i As Long
    Dim Rep As Byte
    Dim Feuille As Long
    Dim DerLig_F1 As Long, DerLig_F2 As Long
 
    Application.ScreenUpdating = False
    Set f1 = Sheets("Synthèse")
    Rep = MsgBox(" Voulez-vous vraiment faire la Synthèse", vbCritical + vbYesNo + 256, "Attention")
 
    If Rep = vbNo Then
        TxtDateIni.SetFocus
        Exit Sub
     End If
    DerLig_F1 = f1.[B1000000].End(xlUp).Row
    Feuille = 1
    For i = 7 To DerLig_F1
        If Sheets(Feuille).Name <> "Synthèse" Then
            DerLig_F2 = Sheets(Feuille).[B1000000].End(xlUp).Row
 
                f1.Range("A" & i).FormulaLocal = "=Ligne()-6"
                f1.Range("B" & i).Value = Sheets(Feuille).Name
                f1.Range("C" & i).Value = Sheets(Feuille).Cells(DerLig_F2, "C")
                f1.Range("D" & i).Value = Sheets(Feuille).Cells(DerLig_F2, "D")
                f1.Range("E" & i).Value = CDate(Sheets(Feuille).Cells(DerLig_F2, "E"))
                f1.Range("F" & i).Value = Sheets(Feuille).Cells(DerLig_F2, "F")
                f1.Range("G" & i).Value = Sheets(Feuille).Cells(DerLig_F2, "I")
                f1.Range("H" & i).Value = Sheets(Feuille).Cells(DerLig_F2, "B")
                f1.Range("I" & i).Value = Sheets(Feuille).Cells(4, "J")
                f1.Range("J" & i).Value = Sheets(Feuille).Cells(6, "J")
 
        Else: i = i - 1
        End If
        Feuille = Feuille + 1
 
    Next i
    Unload UserForm1
    Set f1 = Nothing
End Sub
Merci d"avance pour votre secours