VBA pour modifier le filtre de pivot dans le cube OLAP à une plage

J'ai un tableau croisé dynamique qui extrait les données d'un cube OLAP, et j'aimerais créer une macro pour filtrer un champ pivot contenant la "Semaine de l'année" en fonction de la valeur d'une autre cellule, de sorte que je puisse facilement changer l'heure cadre de la table.

Mon expérience avec les jeux de cubes est très limitée, j'ai donc utilisé l'enregistreur de macro pour voir ce qui se passait. L'exemple de code que j'ai eu était:

ActiveSheet.PivotTables("PivotTable3").PivotFields( _
        "[Time].[Week of Year].[Week of Year]").VisibleItemsList = Array( _
        "[Time].[Week of Year].&[1]", "[Time].[Week of Year].&[2]", _
        "[Time].[Week of Year].&[3]")

Existe-t-il un moyen de simplifier cela afin qu'il définisse le filtre avec le tableau 1 à n, n étant la valeur d'une autre cellule? Mon objectif est d'être capable de montrer les semaines 1 à 15, en entrant 15 dans un champ spécifié.

0

1 Réponses

Ça devrait être quelque chose comme ça:

Dim aWeeks()
Dim n                     As Long
Dim x                     As Long

n = Range("A1").Value

ReDim aWeeks(n - 1)
For x = 1 To n
    aWeeks(x - 1) = "[Time].[Week of Year].&[" & x & "]"
Next x
ActiveSheet.PivotTables("PivotTable3").PivotFields( _
        "[Time].[Week of Year].[Week of Year]").VisibleItemsList = aWeeks
0
ajouté
Cela fonctionne parfaitement, merci beaucoup! Seriez-vous capable de me parler à travers la logique, donc je sais pour référence future?
ajouté l'auteur Erik Rasmussen, source
Il déclare un tableau de taille 0 à n-1 , puis boucle en ajustant à chaque fois le numéro de la semaine dans la chaîne. Ce tableau est ensuite transmis à la propriété VisibleItemsList . Si vous parcourez le code avec f8 et que la fenêtre Locals est visible, vous pouvez voir comment le tableau est rempli.
ajouté l'auteur Rory, source