Paramétrer le champ valeur (datafields) d'un tcd

Bonjour à tous,

Pour les besoins d'un graphique bâton avec avec des données à la demi-journée cumulées sur un même jour de la semaine (lundi matin et après midi cumulés sur baton lundi, etc sur mardi, mer...), j'utilise un tcd.

Je place en Axe (catégories = lignes) ma donnée "jour", en légende (série = colonnes) ma donnée demi-journée.

Je dispose de 5 indicateurs fonction du niveau d'avancement de mes utilisateurs dans leur processus d'usage.

chacun de ces niveau est donc un champ de mon tcd ("connexions", "instances", etc...)

Afin de faciliter l'affichage des graphs pour chacun de ces 5 indicateurs sans passer par :

  • affichage des champs du tcd,
  • désélection du champ Valeur,
  • sélection du nouveau champ valeur,
je crée sur une cellule une liste de validation de données avec mes 5 valeurs d'indicateurs en vue de pouvoir switcher de l'un à l'autre sans manipulation autre qu'un select.

J'implémente une macro pour changer mon datafield si changement de ma sélection

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim tcd As PivotTable
Set tcd = Sheets("daily").PivotTables("tcd_dataKPI")

    If Target.Address = "$J$2" And Target.count = 1 Then

        SendKeys "%{down}"

        If Target = "" Then
            Target = Range("Liste")(1)
        End If

        With tcd
            .PivotCache.Refresh
            .AddDataField tcd.PivotFields(Target), "Somme de " & Target, xlSum
        End With

    End If

End Sub

mais j'obtiens le msg suivant :

Impossible de lire la propriété PivotFields de la classe Pivot Table.

Dans ma variable Target le débogage me donne pourtant bien la valeur sélectionnée en J2 donc le nom du champ à afficher.

Merci par avance de m'aider à comprendre ce qui ne va pas dans ce que j'ai défini ?

Bonjour,

Une proposition à étudier.

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim pt As PivotTable, pf As PivotField
    If Target.Address = "$J$2" Then
        Application.ScreenUpdating = False
        Set pt = Me.PivotTables(1)
        With pt
            For Each pf In .DataFields
                pf.Orientation = xlHidden
            Next pf
            With .PivotFields(Target.Text)
                .Orientation = xlDataField
                .Function = xlSum
                .Caption = ChrW(931) & " " & Target.Text
            End With
        End With
    End If

End Sub

Excellentissime

Du coup en conservant simplement un

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$J$2" And Target.count = 1 Then
        SendKeys "%{down}"
    End If
End Sub

je conserve qui plus est la fonctionnalité qui ouvre automatiquement ma liste de valeur en cliquant sur $J$2.

C'est absolument tout ce que je souhaitais !!!

1000 Mercis !!!

TF

Rechercher des sujets similaires à "parametrer champ valeur datafields tcd"