Changer l'étiquette d'un TCD avec VBA

Bonjour,

Je suis actuellement en train d'essayer de développer une macro pour automatiser certaines tâches.

J'utilise une source de données externe pour mon TCD (stockée sur le réseau, je n'y ai pas accès).

L'idée est de changer le nom du groupe grâce à une variable, que je ferais choisir à l'utilisateur parmi une sélection possible.

Aujourd'hui, j'ai un code qui fonctionne, de cette manière : (cela marche et met bien à jour mon TCD : le nom du groupe devient "ABCDEF")

    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "[D ENTREPRISE].[NOM GROUPE].[NOM GROUPE]").CurrentPageName = _
        "[D ENTREPRISE].[NOM GROUPE].&[ABCDEF]"

Ayant plusieurs TCD à mettre à jour à chaque fois, je cherche à créer une variable "NomGroupe" pour n'avoir à faire la sélection qu'une seule fois.

Je suis parti sur un code dans ce genre là :

Dim NomGroupe As String

NomGroupe = "ABCDEF"

'
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "[D ENTREPRISE].[NOM GROUPE].[NOM GROUPE]").CurrentPageName = _
        "[D ENTREPRISE].[NOM GROUPE].&[NomGroupe]"

Et là vous vous en doutez, c'est ici que ça coince...

Je reçois une erreur d'exécution '1004', m'indiquant que l'élément est introuvable.

J'en déduis (je peux me tromper) qu'il cherche "NomGroupe" parmi la liste des groupes, et qu'il ne la trouve pas. Il ne remplace donc pas "NomGroupe" par sa valeur, ce qui effectivement ne peut pas marcher.

J'ai cherché sur ce site et sur d'autres, sans trouver de solutions à mon problème, je me tourne donc vers vous, en espérant obtenir de l'aide (la moindre piste est la bienvenue, même si elle ne résout pas l'ensemble du problème )

En vous remerciant par avance

Bonjour,

Essaie ainsi :

Dim NomGroupe As String
NomGroupe = "ABCDEF"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "[D ENTREPRISE].[NOM GROUPE].[NOM GROUPE]").CurrentPageName = _
        "[D ENTREPRISE].[NOM GROUPE]" & ".&[NomGroupe]"

Pas mieux, ça ne change rien au résultat (erreur 1004, et ligne surlignée quand on cherche à débuguer) :/

Re,

A quoi sert le &?

Dim NomGroupe As String
NomGroupe = "ABCDEF"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "[D ENTREPRISE].[NOM GROUPE].[NOM GROUPE]").CurrentPageName = _
        "[D ENTREPRISE].[NOM GROUPE]" & ".[" & NomGroupe & "]"

Toujours pas.

J'ai fait ce code en enregistrant une macro et en changeant à la main la valeur du filtre.

D'où le "[D ENTREPRISE].[NOM GROUPE].&[ABCDEF]"

Enlever ce & ne marche pas non plus.

Il faudrait forcer le remplacement de NomGroupe par sa valeur, mais je ne sais pas comment faire ça (je suis encore assez débutant en VBA...)

Up ?

EDIT :

Après multiples tests, j'ai réussi à le faire marcher en inscrivant de cette façon :

Dim NomGroupe As String
NomGroupe = "ABCDEF"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "[D ENTREPRISE].[NOM GROUPE].[NOM GROUPE]").CurrentPageName = _
        "[D ENTREPRISE].[NOM GROUPE]" & ".&[" & NomGroupe & "]"

La différence avec ce que tu proposais est mince : le & devant le crochet contenant la variable, mais cette fois ça marche

Merci beaucoup pour ton aide, et si quelqu'un a l'explication de pourquoi cette écriture marche, je suis toujours preneur pour une prochaine fois

Rechercher des sujets similaires à "changer etiquette tcd vba"