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 :
Problème : le code me renvoie sans cesse l'erreur "Impossible de définir la propriété Visible de la classe PivotItem"
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
J'ai fait un essai avec le même type de syntaxe :
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 " ".
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
Au tout début j'avais essayé la syntaxe suivante :
Mais là, il ne se passait absolument rien : pas d'erreur, mais pas d'action non plus ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2loss_type.Visible = False
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 !
Partager