Power Pivot VBA filter gamme de reference des cellules

J'essaie d'avoir ma reference de filter pivot de puissance à une gamme de valeurs dans plusieurs cellules. Par exemple, si mon filter a les valeurs A, B, C, DI souhaite qu'il examine les cellules A1: A10 pour voir quelles sont les valeurs. Si A, B existe en A1: A10, je souhaite que le filter affiche uniquement A et B (chaque cellule ne contient qu'une valeur par ex. A1: A, A2: B, A3: "", etc.)

Avec le code ci-dessous, je ne peux que faire reference à une valeur.

Sub SelectKey() Dim key As Ssortingng key = Sheets("Sheet3").Range("R1").Value Sheets("data").PivotTables("PivotTable6").PivotFields("[v_cprs_dashboard_mesortingcs].[mesortingc_key].[mesortingc_key]").VisibleItemsList = Array("[v_cprs_dashboard_mesortingcs].[mesortingc_key].&[" & key & "]") End Sub 

Cela fonctionne pour le tableau pivot régulier mais pas le powerpivot

 With Worksheets("data").PivotTables("PivotTable6").PivotFields("mesortingc_key") .ClearAllFilters For Each PI In .PivotItems PI.Visible = WorksheetFunction.CountIf(Sheets("Sheet3").Range("range1"), PI.Name) > 0 Next PI End With 

Il peut y avoir une meilleure façon de le faire, mais de mon expérience, la seule façon d'y parvenir est de faire passer les PivotItems dans PivotField et de vérifier les noms en fonction des critères.

 Sub SelectKey() Dim key() As Ssortingng key = Split(Sheets("Sheet3").Range("R1").Value, ",") 'load comma separated ssortingng to array Dim pi As PivotItem For Each pi In Sheets("data").PivotTables("PivotTable6").PivotFields("[v_cprs_dashboard_mesortingcs].[mesortingc_key].[mesortingc_key]").PivotItems Dim i As Integer For i = LBound(key) To UBound(key) 'loop through array If pi.Name = key(i) Then pi.Visible = True Exit For Else pi.Visible = False End If Next Next End Sub