Bonjour,

J'ai déjà fait beaucoup de recherches sur d'autres discussions et d'autres forums pour mon problème, mais je n'arrive pas à le résoudre. J'ai fait aussi beaucoup d'essais sur mon code, mais sans succès...

Contexte : J'ai une plage de donnée avec les noms des PivotItems que je veux sélectionner sur mon TCD (c'est tout simplement un une liste de mots sur les cellules A100 à A109). Je veux créer un code qui rend visibles les PivotItems dont le nom est dans cette liste et non visibles pour les autres. Voici le code que j'ai fait :

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
 
Sub data_setting(sheet, pivot_table)
 
    Sheets(sheet).Activate
 
    losses_types = Range("A5:A14").Value
    Range("A100:A109") = losses_types
 
' ----- pas important pour la question
    ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").ClearAllFilters
    ActiveSheet.PivotTables(pivot_table).PivotFields("Month").ClearAllFilters
    ActiveSheet.PivotTables(pivot_table).PivotFields("Month").CurrentPage = "(All)"
 
    With ActiveSheet.PivotTables(pivot_table).PivotFields( _
        "Somme de Durée décimale")
        .Caption = "Moyenne de Durée décimale"
        .Function = xlAverage
    End With
 '-----   
 
    Dim loss_type As PivotItem
 
    For Each loss_type In ActiveSheet.PivotTables(pivot_table).PivotFields("Durée décimale").PivotItems()
 
        Select Case loss_type.name
 
            Case Range("A100"), Range("A101"), Range("A102"), Range("A103"), Range("A104"), Range("A105"), Range("A106"), Range("A107"), Range("A108"), Range("A109")
                ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").PivotItems(loss_type.name).Visible = True
            Case Else
                ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").PivotItems(loss_type.name).Visible = False
 
        End Select
 
    Next loss_type
 
End Sub
Problème : le code me renvoie sans cesse l'erreur "Impossible de définir la propriété Visible de la classe PivotItem"
J'ai fait un essai avec le même type de syntaxe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Dim nom As String
nom = "un nom de ma liste"
ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").PivotItems(nom).Visible = False
Et là, ça marche ... Je me suis donc demandée si mon problème venait du faite qu'Excel ne comprend pas que loss_type.name est un String ? Il n'y a jamais les " ".

Au tout début j'avais essayé la syntaxe suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
loss_type.Visible = False
Mais là, il ne se passait absolument rien : pas d'erreur, mais pas d'action non plus ...

Auriez-vous des idees, des pistes ... des solutions ? Cela fait longtemps que je pêche sur ce problème et je ne peux pas avancer sur mon code, si ça bloque ici ...

Merci beaucoup !