TCD : affichage valeur à la place entête colonne

Bonjour à tous,

Je me permets de vous solliciter, mais cette fois-ci sur les TCD.

C'est la première fois que je rencontre ce problème :

Dans un TCD là où je choisis mon étiquette de ligne, il m'affiche les valeurs au lieu d'afficher mon entête de colonne.

Si dans ma colonne TOTO j'ai les valeurs suivantes : 1,3,5,7,9

Dans mon TCD, "étiquettes de lignes" il va m'afficher 1,3,5,7,9 au lieu de TOTO

Avez-vous une idée d'où ça peut venir ?

14tcdnat.xlsx (25.92 Ko)

Bonjour,

Il va falloir que tu précises ta demande, car vu la structure de ton tableau, le choix est restreint pour le TCD.

Ton champ TOTO ne contient que des valeurs numériques !?

Cdlt.

Jean-Eric a écrit :

Bonjour,

Il va falloir que tu précises ta demande, car vu la structure de ton tableau, le choix est restreint pour le TCD.

Ton champ TOTO ne contient que des valeurs numériques !?

Cdlt.

Mon tableau est extrait ainsi d'un logiciel (BO). Cela serait la cause ? Cela voudrait dire que je dois modifier la structure de mon tableau ?

Bonjour,

Un exemple à étudier.

Cdlt.

17tcdnat.xlsm (45.29 Ko)

Merci pour ce super travail !

Cependant, il ne correspond pas parfaitement à ce que j'attendais. Car derrière l'objectif est de faire des graphiques, et avec ta solution, cela me semble impossible.

Par contre, ta solution m'a donné l'idée d'utiliser les sous-totaux, et avec j'obtiens ce que je souhaite hormis que mes critères sont en colonnes et non en ligne

Je t'ai mis un onglet "Souhait" pour que tu puisses visualiser mon idéal.

Merci encore.

Re,

On risque de tourner en rond un petit moment.

C'est quoi BS et Catégorie ? Quels graphiques veux tu créer ?

Ne peux tu pas donner un exemple concret de résultat ?

Cdlt.

Jean-Eric a écrit :

Re,

On risque de tourner en rond un petit moment.

C'est quoi BS et Catégorie ? Quels graphiques veux tu créer ?

Ne peux tu pas donner un exemple concret de résultat ?

Cdlt.

Je t'ai modifié l'onglet "Souhait"

BS est une abréviation de "Boucle de Seine" et les catégories sont : "toto, tata, titi..."

Un nouvel exemple.

Cdlt.

13tcdnat.xlsm (63.52 Ko)
Jean-Eric a écrit :

Un nouvel exemple.

Cdlt.

Le TCD c'est vraiment ce que je souhaite.

Donc si je comprends bien, le fond de mon problème vient de la structure de mon tableau ?

Comment as-tu obtenu le tableau sur la feuille "consolidation" (celui qui te sert de base de calcul) ?

Re,

Tu as parfaitement compris : on doit normaliser les données pour travailler (correctement) avec un TCD.

La normalisation des données a été effectuée avec une procédure VBA (macro).

Je mets les procédures avec des commentaires pour une (bonne) compréhension.

ALT F11 pour ouvrir l'éditeur VBE ; voir module Feuil1 (Consolidation et TCD)

Cdlt.

7tcdnat.xlsm (61.57 Ko)
Option Explicit
'Déclarations variables niveau module
Dim lo As ListObject
'-----------------------------------------------------------------------------
Private Sub cmdNormaliser_Les_Données_Click()
'Déclarations variables niveau procédure
Dim rCell As Range
Dim ws As Worksheet
Dim tbl, arr()
Dim I As Long, J As Long, k As Long

    'Optimisation procédure (gel affichage)
    Application.ScreenUpdating = False
    'RAZ tableau si données, en conservant les formules et la mise en forme
    With Me.ListObjects(1)
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        'Initialisation variable (cellule) pour la copie
        Set rCell = .InsertRowRange.Cells(1)
    End With
    'Initialisation feuille
    Set ws = ActiveWorkbook.Worksheets("Données BO")
    'Tableau des données à normaliser
    tbl = ws.Cells(1).CurrentRegion.Value
    'Création tableau normalisé (5 lignes * n colonnes)
    For I = 2 To UBound(tbl, 1)
        For J = 4 To UBound(tbl, 2)
            If tbl(I, J) <> 0 Then
                ReDim Preserve arr(5, k + 1)
                arr(0, k) = tbl(I, 1)
                arr(1, k) = tbl(I, 2)
                arr(2, k) = tbl(I, 3)
                arr(3, k) = tbl(1, J)
                arr(4, k) = tbl(I, J)
                k = k + 1
            End If
        Next J
    Next I
    'Restitution des données dans le tableau
    '(n lignes x 5 colonnes)
    rCell.Resize(UBound(arr, 2), 5).Value = Application.Transpose(arr)
    'Largeur colonnes
    Me.ListObjects(1).HeaderRowRange.EntireColumn.AutoFit
    'Actualisation du TCD
    Me.PivotTables(1).PivotCache.Refresh
    'RAZ des variables
    Erase arr
    Set rCell = Nothing
    Set ws = Nothing

End Sub
'-----------------------------------------------------------------------------
Private Sub cmdRaz_Click()

    'Optimisation procédure (gel affichage)
    Application.ScreenUpdating = False
    'RAZ tableau si données, en conservant les formules et la mise en forme
    With Me.ListObjects(1)
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
    End With
    'Actualisation du TCD
    Me.PivotTables(1).PivotCache.Refresh

End Sub

Merci pour l'explication.

Dernière question avant de clôturer le sujet : il n'y a pas d'autres moyens que de passer par du VBA ?

RE,

Une proposition avec formules.

Cdlt.

16tcdnat.xlsx (140.61 Ko)
Jean-Eric a écrit :

RE,

Une proposition avec formules.

Cdlt.

Merci.

Je garde précieusement tes deux fichiers.

Encore un grand merci pour ton aide.

Rechercher des sujets similaires à "tcd affichage valeur place entete colonne"