Selectionner Etiquette TCD

Bonjour à toutes et à tous,

Je suis actuellement entrain de faire une macro dans le but de selectionner des éléments précis de l'étiquette de mon TCD.

Voici ce que j'ai fait jusqu'à maintenant :

Sub Macro1()

    Dim pt As PivotTable
    Dim pf As PivotField

    Set pt = Worksheets("Feuille TCD").PivotTables("Tableau croisé dynamique5") 'Mon TCD
    Set pf = pt.PivotFields( _
        "Champ1") 'Mon champ en étiquette

    pf.CurrentPageName = _
    "[Champ1].[All Champ1].[élement1].[élement2].[élement3]" 'Selection des éléments de l'étiquette que je veux afficher

End Sub

Le problème est que la dernière ligne de fonctionne pas, ca m'affiche "Erreur d'exécution '1004': Erreur définier par l'application ou par l'objet"

Quelqu'un pourrait m'aider s'il vous plait ? De plus si vous avez une meilleure façon de faire ce que je veux je suis preneur !

Bonjour

D'après ton code ton TCD a une source Cube. Est-le cas ?

CurrentPage ne fonctionne qu'avec un champ de page (filtre)

Champ1 n'est pas idéal comme nom de champ.

Bonjour 78chris

Il s'agit d'un TCD créé à partir d'une base de données énorme, j'ai lu quelque part que c'était approprié mais peut être ai-je mal compris.

"Champ1" est juste un nom que j'ai mis au hasard car les données sont confidentielles mais prenons l'exemple d'un champ contenant des années par exemple, comment je pourrais faire pour selectionner des années précises parmis d'autres ?

Re

Tu parles de sélectionner mais je suppose que tu veux filtrer

Pourquoi pas un simple segment ? On filtre d'un clic ou quelques clics si multi choix

En VBA,

selon que l'année est

  • en champ de page,
    avec
  • ou sans sélection multiple,
  • en étiquettes de ligne ou de colonnes,
  • le code ne sera pas le même...

    Donc répondre dans le vague n'est pas la meilleure solution...

    De façon générale on doit défiltrer le champ avant de refiltrer ceux dont on en veut pas, ce qui fait une longue boucle si la lsite est très longue alors qu'un segment est instantané...

    Merci pour ta réponse, j'ai une question concernant les segments, est ce que ceux ci restent (avec les mêmes éléments selectionnés) après la MAJ du TCD ?

    As-tu un lien ou on explique le codage en fonction de ce que tu viens de me dire s'il te plait ?

    RE

    Oui les segments restent en l'état, si la source du TCD est correctement définie, sauf si dans la source certains items n'existent plus (et encore selon l'état du cache cela peut ne pas être immédiat).

    Le plus simple est que tu testes sur ton cas pour t'en rendre compte.

    Concernant le filtre par VBA, comme déjà dit cela dépend où est placé le champ et, si en champ de page, si le champ est mono ou multi sélectionnable...

    Ce peut être ce type de code si pas champ de page mono selection

    With ActiveSheet.PivotTables("NomTCD").PivotFields("NomChamp")
        ClearAllFilters
        For Each pItem In .PivotItems
            If pItem.Name <>Valeur1 And pItem.Name <> Valeur2 … Then
                pItem.Visible = False
                ......

    Merci beaucoup de ton aide, je vais étudier ça plus en détail ce soir !

    Bonne journée

    Rechercher des sujets similaires à "selectionner etiquette tcd"