Bonjours à tous,
je cherche à faire un tableau croisé dynamique ou quelque chose s'en approchant à partir d'une matrice.
Donnees est ma matrice.
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 Sub test() Dim PreLiTDC1 As Long, DerLiTDC1 As Long, DerColTDC1 As Long, i As Long Dim Donnees() Dim Pvt1 As PivotTable Set Pvt1 = ActiveSheet.PivotTables("Tableau croisé dynamique1") PreLiTDC1 = Cells.Find("TOTAL LOTS").Row 'trouve la première ligne du TDC1 DerColTDC1 = Pvt1.TableRange1.Columns.Count + 1 'trouve la Dernière colonne du TDC1 DerLiTDC1 = Cells(PreLiTDC1 + 1, DerColTDC1 + 1).End(xlDown).Row 'trouve la dernière ligne du TDC1 ReDim Donnees(DerLiTDC1 - PreLiTDC1, DerColTDC1 - 2) 'dimentionne la matrice qui récupèrera les données Donnees = Range("B4", Cells(DerLiTDC1, DerColTDC1)) i = 1 While Donnees(i, 1) <> "Total par année" If Donnees(i, 1) = "" Then Donnees(i, 1) = Donnees(i - 1, 1) i = i + 1 Wend End Sub
Elle est alimenté avec un Tableau croisé dynamique.
En faite je souhaite faire un tableau croisé dynamique du tableau croisé dynamique.
j'ai essayé comme ça en passant par les listes mais je n'arrive pas à alimenter ma liste.
A priori c'est normal que ça ne marche pas vu que Names dois faire référence à des cellules.
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 Sub test() Dim PreLiTDC1 As Long, DerLiTDC1 As Long, DerColTDC1 As Long, i As Long Dim Donnees(), Synthese() Dim Pvt1 As PivotTable Dim nombredelot As Byte Dim lot As String Set Pvt1 = ActiveSheet.PivotTables("Tableau croisé dynamique1") PreLiTDC1 = Cells.Find("TOTAL LOTS").Row 'trouve la première ligne du TDC1 DerColTDC1 = Pvt1.TableRange1.Columns.Count + 1 'trouve la Dernière colonne du TDC1 DerLiTDC1 = Cells(PreLiTDC1 + 1, DerColTDC1 + 1).End(xlDown).Row 'trouve la dernière ligne du TDC1 ReDim Donnees(DerLiTDC1 - PreLiTDC1, DerColTDC1 - 2) 'dimentionne la matrice qui récupèrera les données Donnees = Range("B122 ", Cells(DerLiTDC1, DerColTDC1)) i = 1 While Donnees(i, 1) <> "Total par année" If Donnees(i, 1) = "" Then Donnees(i, 1) = Donnees(i - 1, 1) i = i + 1 Wend Names("TDC graph inter").RefersToR1C1 = Donnees End Sub
Du coup j'ai essayé comme ça mais ça ne marche pas non plus.
Quelqu'un pourrai m'aiguiller sur une solution possible?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sheets("TDCPPA").PivotTables("TDC graph inter").SourceData = Donnees Sheets("TDCPPA").PivotTables("TDC graph inter").PivotCache.Refresh
Merci d'avance
Partager