Basiquement, je développe une fonction qui permet à l'utilisateur de choisir dans une Listbox les noms des gens qu'ils veulent voir affichés, les autres sont alors cachés. Le tout est basé sur un TCD

En pratique, j'ai une macro qui lit la Lisbox et stocke les nom dans un Array appelé "output" et qui a un maximum de 1000 éléments.

Suite à ça, j'utilise les noms listés dans "output", et je cherche à ce que ces noms restent affichés dans le TDC (champs de ligne).

Pour ce faire, j'ai écrit le code ci-dessous:
1- Cacher toutes les lignes
2- Afficher les personnes ("Buyers") qui sont listés dans "output"

Le problème est que ça ne marche pas vraiment. La partie qui retire les ligne fonctionne, mais je n'arrive pas à ré-afficher.

Qu'est ce qui ne va pas dans mon code?

Merci de votre aide!!
Olivier

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
Sub test()
Dim pt As PivotTable
Dim pi As PivotItem
Dim output(0 To 1000) As String
Dim i As Integer 
Dim j As Integer
 
'Crée Output à partir de la Listbox ByrSelectList, marche OK    
j = 0
    For i = 0 To ActiveSheet.ByrSelectList.ListCount - 1
            If ActiveSheet.ByrSelectList.Selected(i) Then
                output(j) = ActiveSheet.ByrSelectList.List(i)
                j = j + 1
        End If
    Next i
 
 
 
    Set pt = ActiveSheet.PivotTables("PivotTable1")
 
'Cache toutes les lignes champs appelé "Buyer" dans le TCD
    For Each pi In pt.PivotFields("Buyer").PivotItems
        On Error Resume Next
        pi.Visible = False
    Next pi
 
'Affiche les lignes qui sont dans l'array output(), ne marche pas :'(
        For i = 0 To 1000
         pt.PivotFields("Buyer").PivotItems(output(i)).Visible = True
        Next i
 
end sub