Bonjour à toutes et à tous,

Je prépare un fichier fait de diverses présentations d'un même TCD sur autant de feuilles différentes. Pour éviter aux utilisateurs des manipulations sur les tcd, je leur propose de filtrer les champs de page d'un TCD source "PF", et ce filtre se répercute sur les "PF1", "PF2", etc.

Je bute sur le code qui effectue le filtre après avoir mis un "X" dans une cellule de choix :
Si je fais un choix dans la colonne à cocher, le filtre se fait bien, par contre, si je ne fais aucun choix, c'est la dernière ligne de la liste qui m'apparaît au lieu de (Tous).
X DIRECTIONS

X 1 - GÉNÉRALE
O 2 - VENTES
O 3 - RESSOURCES HUMAINES
O 4 - SERVICES TECHNIQUES
Résultat : 1 - GÉNÉRALE

X DIRECTIONS

O 1 - GÉNÉRALE
O 2 - VENTES
O 3 - RESSOURCES HUMAINES
O 4 - SERVICES TECHNIQUES
Résultat : 4 - SERVICES TECHNIQUES

N.B. Le champ "X" et le champ "DIRECTIONS" sont des noms définis dynamiques.
Le code utilisé 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
 
Sub PivotUnHideMarkedItems()
Dim wsDP As Worksheet
Dim ws As Worksheet
Dim rngItems As Range
Dim c As Range
Dim i As Integer
Dim j As Integer
 
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Set wsDP = Sheets("Dir_Progr")
 
'++++++++++++++++++++++++++++++++++++
 
 
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
For Each ws In Sheets(Array(wsDP.Name))
Set rngItems = wsDP.Range("ListeDIRECTIONS") '
 
  For Each pt In ws.PivotTables
    Set pf = pt.PivotFields("DIRECTIONS")
    On Error Resume Next
     With pf
      .CurrentPage = "(All)"
      .AutoSort xlManual, .SourceName
      'show all pivot items
 
       For Each pi In pf.PivotItems
 
 
        pi.Visible = True
 
       Next pi
       For Each c In rngItems
 
        If UCase(c.Offset(0, -1).Value) = "" Then
           .PivotItems(c.Value).Visible = False
        End If
       Next c
      .AutoSort xlAscending, .SourceName
 
     End With
  Next pt
 Next ws
End Sub
Pouvez-vous m'aider ?

Merci d'avance

Chordially