XL 2016 Affficher en-têtes de lignes dans un TCD

emilied009

XLDnaute Nouveau
Bonjour,

Je souhaiterai afficher les titres des lignes dans un TCD. On on peut le faire pour les colonnes mais je ne sais pas comment faire pour les lignes...

Ci-joint un fichier modèle avec la base de données dans la première feuille, la feuille TCD1 pour laquelle j'aimerai que les titres de lignes s'affichent, et la feuille TCD2 qui montre l'affichage des titres en colonnes que j'aimerai avoir pour les lignes.

En vous remerciant par avance,
 

Pièces jointes

  • étiquettes de lignes.xlsx
    17.3 KB · Affichages: 7

emilied009

XLDnaute Nouveau
Bonjour emiled009, Roblochon,
Si j'ai bien compris, sélectionnez une cellule de votre "TCD1" puis allez sur l'onglet "Création",
Cliquez sur l'option "Afficher en mode Plan" sous l'onglet "Disposition du rapport"
Cordialement
Bonjour,

Je vous remercie de votre réponse,
Je ne souhaite pas un affichage en mode plan, je souhaite garder les données en lignes mais il faudrait que les titres des champs s'affichent de la même façon qu'il le fait pour les colonnes...

Je souhaite obtenir ça:

2019-09-16_1207.png


Sauf que là dans la colonne A j'ai saisi à la main, je souhaiterai que ça s'affiche grâce au TCD
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Par macro dans le fichier joint :
VB:
Sub EtiquettesDeChamps()
    Dim Tcd As PivotTable, Pfd As PivotField, Pvi As PivotItem
    Dim plg As Range
  
    With ThisWorkbook.Sheets("TCD1")
        Set Tcd = .PivotTables(1)
        '
        ' Au besoin rajouter une colonne à gauche du tcd
        If Tcd.DataBodyRange.Columns(1).Column = 1 Then
            Tcd.DataBodyRange.Columns(1).EntireColumn.Insert xlShiftToRight
        End If
        '
        ' Vider la colonne à gauche
        Tcd.DataBodyRange.Columns(1).Offset(, -1).ClearContents
        '
        ' Parcourir tous les champs de tcd
        For Each Pfd In Tcd.PivotFields
            '
            ' si l' orientation est en ligne
            If Pfd.Orientation = xlRowField Then
                '
                ' Parcourir tous les items
                For Each Pvi In Pfd.PivotItems
                    '
                    ' inscrire le nom du champ à gauche de la ligne
                    Pvi.DataRange.Offset(, -1) = Pvi.Parent.Name
                Next Pvi
            End If
        Next
        '
        ' Ajustement automatique de la largeur de colonne
        Tcd.DataBodyRange.Columns(1).Offset(, -1).AutoFit
    End With
End Sub

Bon après-midi
 

Pièces jointes

  • étiquettes de lignes.xlsm
    329 KB · Affichages: 4

emilied009

XLDnaute Nouveau
Re,

Par macro dans le fichier joint :
VB:
Sub EtiquettesDeChamps()
    Dim Tcd As PivotTable, Pfd As PivotField, Pvi As PivotItem
    Dim plg As Range
 
    With ThisWorkbook.Sheets("TCD1")
        Set Tcd = .PivotTables(1)
        '
        ' Au besoin rajouter une colonne à gauche du tcd
        If Tcd.DataBodyRange.Columns(1).Column = 1 Then
            Tcd.DataBodyRange.Columns(1).EntireColumn.Insert xlShiftToRight
        End If
        '
        ' Vider la colonne à gauche
        Tcd.DataBodyRange.Columns(1).Offset(, -1).ClearContents
        '
        ' Parcourir tous les champs de tcd
        For Each Pfd In Tcd.PivotFields
            '
            ' si l' orientation est en ligne
            If Pfd.Orientation = xlRowField Then
                '
                ' Parcourir tous les items
                For Each Pvi In Pfd.PivotItems
                    '
                    ' inscrire le nom du champ à gauche de la ligne
                    Pvi.DataRange.Offset(, -1) = Pvi.Parent.Name
                Next Pvi
            End If
        Next
        '
        ' Ajustement automatique de la largeur de colonne
        Tcd.DataBodyRange.Columns(1).Offset(, -1).AutoFit
    End With
End Sub

Bon après-midi

C'est super, merci!

Pouvez-vous me dire comment appliquer cette procédure sur mon fichier complet?
 

emilied009

XLDnaute Nouveau
Bonjour à tous

Le TCD a pour vocation le calcul statistique.

Là ce que tu cherches n'a rien à voir avec les possibilités du TCD.

PowerQuery intégré, à Excel 2016, peut donner ce résultat, amendable

Regarde la pièce jointe 1040702
Bonjour,

Oui je sais bien que ce mon tableau n'est pas un tableau de calcul mais comme le TCD affiche les titres des colonnes je pensais qu'on pouvait faire pareil pour les lignes... Je ne connais pas Powerquery, je vais regarder ça
 

emilied009

XLDnaute Nouveau
Bonjour à tous

Le TCD a pour vocation le calcul statistique.

Là ce que tu cherches n'a rien à voir avec les possibilités du TCD.

PowerQuery intégré, à Excel 2016, peut donner ce résultat, amendable

Regarde la pièce jointe 1040702
J'ai regardé powerquery mais je ne connais pas du tout. J'ai essayé de créer une nouvelle requête mais il faut une source extérieure. Pourriez-vous me donner la première étape pour que j'essaye de suivre la logique?

Je vous remercie d'avance,
 

emilied009

XLDnaute Nouveau
Bonjour à tous

Le TCD a pour vocation le calcul statistique.

Là ce que tu cherches n'a rien à voir avec les possibilités du TCD.

PowerQuery intégré, à Excel 2016, peut donner ce résultat, amendable

Regarde la pièce jointe 1040702
Bon j'ai réussi en créant une requête à partir d'un tableau et en sélectionnant les données de la feuille 1, j'ai fait "utiliser les en-têtes comme première ligne" et j'ai transposé ce qui m'a permis d'avoir la bonne présentation pour la première ligne de données. Quelle manip avez-vous faites pour que les champs se répètent dans la colonne de gauche et que les données se placent dans la colonne de droite et les unes en dessous des autres?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Bonjour, il ne faut pas transposer mais "Supprimer le tableau croisé dynamique des colonnes" en terme de PowerQuery:

Une fois que vous avez votre source et supprimez les colonnes non désirées.

A l'étape suivante, sélectionnez toutes les colonnes(important) puis cliquez dans le groupe "transformer/N'importe quelle colonne" sur le bouton idoine "Supprimer le tableau croi......"
vous devriez avoir quelque chose comme ça dans la barre de formule de PQ : Table.UnpivotOtherColumns(#"Colonnes supprimées", {}, "Attribut", "Valeur")

Où #"Colonnes supprimées" est le nom de l'étape précédente.

Dans cette même barre de formules vous pouvez changez les noms des nouvelles colonnes "Attribut" et "Valeur" par ce que vous voulez puis re-valider l'étape en appuyant sur ENTREE

P.S. tout ceci sur mon edition de excel 2010 bien-sûr (cela peut être un peu différent pour vous)

Cordialement
 

Pièces jointes

  • étiquettes de lignes.xlsm
    39.9 KB · Affichages: 4
Dernière édition:

Statistiques des forums

Discussions
312 198
Messages
2 086 110
Membres
103 121
dernier inscrit
SophieS