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 :
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
C'est maintenant que tout se complique. Lorsque je demande à effectuer ce filtrage, une erreur s'affiche :
Erreur d'exécution '1004' : Impossible de définir la propriété Visible de la classe PivotItem
Mon code est le suivant :
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
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
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.Refresh
Help me please !!!!!!!!!!!!!!!!!!!Je sèche !

Pour que vous comprenez mieux je vous joins mon fichier Pour 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 !!!