Bonjour à tous,
Voilà, j’essaie de mettre en place un rapport d'activité avec des indicateurs (=graphiques) et je bloque sur une partie de mon code![]()
Je voudrais effectuer un filtrage d'un TCD (Tableau Croisé Dynamique) d'une période par date rentré au préalable dans des [Textbox] se trouvant dans un [Userform].
Tout d'abord, je sais que les dates rentrés dans les [Textbox] sont interpétré par VBA en anglais et le filtrage de date d'un TCD en VBA est assez compliqué, donc pour faciliter tout ça, j'ai effectuer les copies des valeurs inscrites dans les [Textbox] sur une feuille ou je traduis celle-ci en français et je les met aux formats "standard" ainsi que la colonne du tableau concerné et un "refresh" du graphique :
C'est maintenant que tout se complique
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 ' extract date TextBox and convert in french and standard Range("K1").Select Range("K1").Value = CDteF Range("L1").Select ActiveCell.FormulaR1C1 = "=DATE(YEAR(RC[-1]),DAY(RC[-1]),MONTH(RC[-1]))" Selection.NumberFormat = "General" Range("K2").Select Range("K2").Value = CDteT Range("L2").Select ActiveCell.FormulaR1C1 = "=DATE(YEAR(RC[-1]),DAY(RC[-1]),MONTH(RC[-1]))" Selection.NumberFormat = "General" Range("M1").Select ActiveCell.FormulaR1C1 = _"=IF(RC[-1]="""","""",INT(MOD(INT((RC[-1]-2)/7)+0.6,52+5/28))+1)" ' convert date Activity in standard Sheets("Activity").Select Columns("C:C").Select Selection.NumberFormat = "General" ActiveSheet.PivotTables("Table Activity").PivotCache.Refresh. Lorsque je demande à effectuer ce filtrage, une erreur s'affiche
:
Mon code est le suivant :Erreur d'exécution '1004' : Impossible de définir la propriété Visible de la classe PivotItem
Et cela reste incompréhensible car j'utilise la même structure de code pour un filtrage par N° de semaine et cela fonctionne sans erreur
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 Private Sub Extract_B_D_Click() 'Statements '------------------------------------------------------------------------------------------------- Dim graph As Object 'selection old graphic Dim NDteF 'selection date From Dim NDteT 'selection date To Dim FdteF As Object 'filter date Dim FWeek As Object 'filter week Dim CDteF 'convert date From Dim CDteT 'convert date To 'Boots '------------------------------------------------------------------------------------------------- CDteF = From_T_D.Value 'TextBox1 CDteT = To_T_D.Value 'TextBox2 NDteF = Sheets("Indicator").Range("L1").Value NDteT = Sheets("Indicator").Range("L2").Value ' extract date TextBox and convert in french and standard Range("K1").Select Range("K1").Value = CDteF Range("L1").Select ActiveCell.FormulaR1C1 = "=DATE(YEAR(RC[-1]),DAY(RC[-1]),MONTH(RC[-1]))" Selection.NumberFormat = "General" Range("K2").Select Range("K2").Value = CDteT Range("L2").Select ActiveCell.FormulaR1C1 = "=DATE(YEAR(RC[-1]),DAY(RC[-1]),MONTH(RC[-1]))" Selection.NumberFormat = "General" Range("M1").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",INT(MOD(INT((RC[-1]-2)/7)+0.6,52+5/28))+1)" ' convert date Activity in standard Sheets("Activity").Select Columns("C:C").Select Selection.NumberFormat = "General" ActiveSheet.PivotTables("Table Activity").PivotCache.Refresh 'Activity '------------------------------------------------------------------------------------------------- ' initialization Table Activity Sheets("Activity").Select Application.ScreenUpdating = False With ActiveSheet.PivotTables("Table Activity").PivotFields("Dte") On Error Resume Next For Each FdteF In .PivotItems FdteF.Visible = True Next ' filter Date For Each FdteF In .PivotItems On Error Resume Next If FdteF.Name > NDteF Then FdteF.Visible = False If FdteF.Name < NDteT Then FdteF.Visible = False Next End With Application.ScreenUpdating = True ActiveSheet.PivotTables("Table Activity").PivotCache.Refresh:
Help me please !!!!!!!!!!!!!!!!!!!
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 Private Sub Extract_B_W_Click() Dim NWeek 'selection week Dim FWeek As Object 'filter week NWeek = Week_T_W.Value 'Activity '------------------------------------------------------------------------------------------------- ' initialization Table Activity Sheets("Activity").Select Application.ScreenUpdating = False With ActiveSheet.PivotTables("Table Activity").PivotFields("Date Week") For Each FWeek In .PivotItems FWeek.Visible = True Next ' filter Week Number On Error Resume Next For Each FWeek In .PivotItems If FWeek.Name <> NWeek Then FWeek.Visible = False Next End With Application.ScreenUpdating = True ActiveSheet.PivotTables("Table Activity").PivotCache.RefreshJe sèche !
Pour que vous comprenez mieux je vous joins mon fichierPour afficher cette fameuse erreur, il suffit d'aller à la feuille INDICATOR et d'appuyer sur le bouton [EXTRACT], puis quand l'USERFORM apparaît, cliquez sur le bouton [From Date To Date].
PS : Si quelqu'un à une meilleur idée pour la conversion des dates français-anglais-français-format standard, je suis preneur !!!![]()
Partager