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 :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
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
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 :
Merci d"avance pour votre secours
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
Partager