Bonjour

voila j essaye de réaliser un TCD avec une plage dynamique mais cela n est pas chose si simple en étant débutant je coince sur plusieurs points ;

je suis là pour apprendre et surtout comprendre :

dans mon code j ai une erreur voir 2 ou je bloque clairement , merci d avance pour votre aide,

Premier soucis :
*La définition de ma plage variable j ai un message d erreur et le résultat de mon code pour définir tabtcd = Nothing
*Pour la source data je ne sais pas si c est correct de mettre directement SourceData:="tabtcd"

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
 
Sub Bouton4_Cliquer()
 
' TCD Macro
' Réalisation du TCD à partir des données brutes
 
Dim derlig As Long
 
Dim tabtcd As Range
 
derlig = Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row
 
tabtcd = Sheets("Feuil1").Rows("C" & derlig)
 
tabtcd.Select
 
 
'Probleme : la source du TCD est dynamique et il va créer une page à chaque fois et cette page ne sera pas tjs la n4 apres la 5 apres la 6 ....
 
 
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "tabtcd", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Feuil2!R1C1", TableName:="Tableau croisé dynamique1", _
        DefaultVersion:=xlPivotTableVersion14
    Sheets("Feuil2").Select
    Cells(1, 1).Select
 
 
'D par ligne
 
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Currency")
        .Orientation = xlRowField
        .Position = 1
    End With
 
 
 
'V par D
 
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("USD Equivalent"), _
        "Nombre de USD Equivalent", xlCount
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Nombre de USD Equivalent")
        .Caption = "Somme de USD Equivalent"
        .Function = xlSum
    End With
 
 
'P par d
 
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Revenue"), _
        "Nombre de Revenue", xlCount
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Nombre de Revenue")
        .Caption = "Somme de Revenue"
        .Function = xlSum
    End With
 
 
 
End Sub