Bonjour,

Je suis confronté à 3 fois rien. Mais tout de même

J'essaie via une macro d'afficher le détail de plusieurs filtres sur un TCD.

N'arrivant pas avec showdetails, j'ai essayé de faire une simul double clic via Application.DoubleClic mais rien.

A savoir que la cellule cible A15 ne bouge jamais d'endroit mais affiche un résultat diffèrent selon la valeur des filtres.

Je vous joins mon code en espérant qu'il sera clair pour vous.

Le bug se situe tout à la fin du code.
Le message d'erreur en passant sur le code spécifié
"Impossible de lire la propriété showDétail de la cl.."
Après le message ne s'affiche pas en entier

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim x As Integer
Dim y As String
Dim Pt As PivotTable
Dim Service0 As String
Dim Service1 As String
Dim Service2 As String
Dim FV As String
Dim MS As String
Dim CS1 As String
Dim CS2 As String
Dim CS3 As String
Dim CS4 As String
Dim Act As String
Dim LService0 As String
Dim LService1 As String
Dim LService2 As String
Dim LFV As String
Dim LMS As String
Dim LCS1 As String
Dim LCS2 As String
Dim LCS3 As String
Dim LCS4 As String
Dim LAct As String
 
 
'********************************************************************************************************************************
' Code pour déterminer le nom de la feuille qui permettra de faire le filtre sur le TCD sur les services
'                           * MS (TDB MS, TDB MS VAR)
'                           * Service0 (Entreposage, Distribution)
'                           * Service1 (Terrain, Distribution)
'                           * Service2 (Structure, Contenant,Distribution)
'********************************************************************************************************************************
x = ActiveSheet.Index
 
    Select Case x
 
 
        Case Is = 7, 11
        Worksheets("TCD").Range("G1").Value = ""      'MS
        Worksheets("TCD").Range("E1").Value = "(Tous)"   'MS
        Worksheets("TCD").Range("E6").Value = Sh.Name   'Service0
        Worksheets("TCD").Range("E7").Value = "(Tous)"    'Service1
        Worksheets("TCD").Range("E8").Value = "(Tous)"    'Service2
 
        Case Is = 8, 10, 11
        Worksheets("TCD").Range("G1").Value = ""        'MS
        Worksheets("TCD").Range("E1").Value = "(Tous)"    'MS
        Worksheets("TCD").Range("E6").Value = "(Tous)"    'Service0
        Worksheets("TCD").Range("E7").Value = "(Tous)"    'Service1
        Worksheets("TCD").Range("E8").Value = Sh.Name   'Service2
 
        Case Is = 9
        Worksheets("TCD").Range("G1").Value = ""        'MS
        Worksheets("TCD").Range("E1").Value = "(Tous)"    'MS
        Worksheets("TCD").Range("E6").Value = "(Tous)"    'Service0
        Worksheets("TCD").Range("E7").Value = Sh.Name   'Service1
        Worksheets("TCD").Range("E8").Value = "(Tous)"    'Service2
 
        Case Is = 12, 13
        Worksheets("TCD").Range("G1").Value = "X"       'MS
        Worksheets("TCD").Range("E1").Value = Sh.Name   'MS
        Worksheets("TCD").Range("E6").Value = "(Tous)"    'Service0
        Worksheets("TCD").Range("E7").Value = "(Tous)"    'Service1
        Worksheets("TCD").Range("E8").Value = "(Tous)"    'Service2
 
 
        Case Is = 1, 2, 3, 4, 5, 6, 15
        Worksheets("TCD").Range("G1").Value = ""        'MS
        Worksheets("TCD").Range("E6").Value = "(Tous)"    'Service0
        Worksheets("TCD").Range("E7").Value = "(Tous)"    'Service1
        Worksheets("TCD").Range("E8").Value = "(Tous)"    'Service2
 
    End Select
'********************************************************************************************************************************
' Code pour déterminer le nom de la cellule ayant fait l'objet d'un double clic qui permettra
'  de faire le filtre sur le TCD sur les agrégats Synergie
'                           * Code Synergie4 (le plus fin)
'                           * Code Synergie3 (le plus fin -1)
'                           * Code Synergie2 (le plus fin -2)
'                           * Code Synergie (le plus fin -4)
'********************************************************************************************************************************
 
y = Target.Address
 
Select Case x
 
    Case Is = 7, 8, 9, 10, 11, 12, 13
 
    Worksheets("TCD").Range("F1").Value = y
    Cancel = True
 
End Select
 
'********************************************************************************************************************************
' 1° Etape :Code pour affecter la valeur des filtres sur le TCD.
' 2° Etape : Actualisation du TCD
' 3° Etape : Double clic sur la valeur du TCD afin d'obtenir le détail sur une feuille
'
'********************************************************************************************************************************
 
 
LMS = Worksheets("TCD").Range("A1").Value
LCS1 = Worksheets("TCD").Range("A2").Value
LCS2 = Worksheets("TCD").Range("A3").Value
LCS3 = Worksheets("TCD").Range("A4").Value
LCS4 = Worksheets("TCD").Range("A5").Value
LService0 = Worksheets("TCD").Range("A6").Value
LService1 = Worksheets("TCD").Range("A7").Value
LService2 = Worksheets("TCD").Range("A8").Value
LFV = Worksheets("TCD").Range("A9").Value
LAct = Worksheets("TCD").Range("A10").Value
MS = Worksheets("TCD").Range("E1").Value
CS1 = Worksheets("TCD").Range("E2").Value
CS2 = Worksheets("TCD").Range("E3").Value
CS3 = Worksheets("TCD").Range("E4").Value
CS4 = Worksheets("TCD").Range("E5").Value
Service0 = Worksheets("TCD").Range("E6").Value
Service1 = Worksheets("TCD").Range("E7").Value
Service2 = Worksheets("TCD").Range("E8").Value
FV = Worksheets("TCD").Range("E9").Value
Act = Worksheets("TCD").Range("E10").Value
 
 
 
 
 Set Pt = Worksheets("TCD").PivotTables("GL1")
 
With Pt
                With Pt.PivotFields(LMS)
                    .ClearAllFilters
                    .CurrentPage = MS
                End With
End With
 
With Pt
                With Pt.PivotFields(LCS1)
                    .ClearAllFilters
                    .CurrentPage = CS1
 
                End With
End With
 
 
With Pt
               With Pt.PivotFields(LCS2)
                    .ClearAllFilters
                    .CurrentPage = CS2
                End With
End With
 
With Pt
               With Pt.PivotFields(LCS3)
                    .ClearAllFilters
                    .CurrentPage = CS3
                End With
End With
 
With Pt
               With Pt.PivotFields(LCS4)
                    .ClearAllFilters
                    .CurrentPage = CS4
                End With
End With
 
With Pt
               With Pt.PivotFields(LService0)
                    .ClearAllFilters
                    .CurrentPage = Service0
                End With
End With
 
With Pt
               With Pt.PivotFields(LService1)
                    .ClearAllFilters
                    .CurrentPage = Service1
                End With
End With
 
With Pt
               With Pt.PivotFields(LService2)
                    .ClearAllFilters
                    .CurrentPage = Service2
                End With
End With
 
With Pt
               With Pt.PivotFields(LFV)
                    .ClearAllFilters
                    .CurrentPage = FV
                End With
End With
 
With Pt
               With Pt.PivotFields(LAct)
                    .ClearAllFilters
                    .CurrentPage = Act
                End With
 
End With
 
  With Worksheets("TCD")
    Range("A15").ShowDetail = True
    End With
 
End Sub
Merci de votre aide