4 votes

Tableau croisé dynamique affichant des étiquettes qui n'existent pas dans les données sources

J'ai hérité d'un tableau de données existant mais sans aucune donnée, avec des tableaux croisés dynamiques qui ont déjà été créés auparavant et qui ont également été rafraîchis pour être vides (seuls les en-têtes et le formatage ont été conservés). Maintenant, lorsque j'entre "A" dans le tableau, le tableau croisé dynamique affiche l'enregistrement de l'étiquette "B" à la place. Lorsque je double-clique sur la valeur de cette ligne pour afficher la source, c'est "A" qui apparaît. Il y a deux enregistrements qui apparaissent ainsi, alors que les autres données sont correctes.

Je sais qu'il est possible de renommer les étiquettes des éléments du tableau croisé dynamique, mais cette information est-elle en quelque sorte "stockée" même après avoir effacé le tableau et actualisé le tableau croisé dynamique ? C'est quelque chose de très nouveau pour moi depuis plus de 12 ans que j'utilise Excel.

Certaines choses que j'ai essayées :

  • Réinitialisation des données sources et rafraîchissement = Même problème, "A" apparaît toujours sous la forme de "B".
  • Nombre d'éléments à conserver par champ : Aucun = Toujours le même problème après actualisation
  • Créer un nouveau tableau croisé dynamique = Le problème est résolu, "A" apparaît enfin comme "A".

5voto

Lorsque vous créez un tableau croisé dynamique, vous pouvez ensuite renommer les étiquettes dans le tableau croisé dynamique, et elles seront conservées avec le nouveau nom.

Supposons que vous ayez A,B,C dans vos données, vous pouvez renommer C en D dans le tableau croisé dynamique, et à partir de maintenant, la valeur de C apparaîtra comme D, même si vous actualisez les données, même si vous modifiez les données ou si vous supprimez toutes les lignes. Mais pas si vous modifiez les noms des colonnes dans vos données, voir ci-dessous.

Il s'agit d'une fonctionnalité intéressante : par exemple, lorsque vous avez un tableau avec des codes, vous pouvez renommer les codes en étiquettes dans le tableau croisé dynamique, sans utiliser de VLOOKUP.


Voici comment réinitialiser les étiquettes modifiées, à partir de aquí .

  1. Renommer l'en-tête/le nom de la colonne dans la source
  2. Rafraîchir le pivot. Cela supprimera toutes les étiquettes forcées et le champ d'abandon du tableau croisé dynamique.
  3. Renommer le nom de la colonne pour qu'il redevienne ce qu'il était
  4. Rafraîchir le pivot
  5. Ajoutez le champ dans votre pivot.

Notez que vous ne pouvez pas faire cela avec les tableaux croisés dynamiques SSAS.

0voto

Asger Points 3598

Sur demande, voici un exemple pour trouver de tels champs pivot renommés via VBA.

Cette mesure est destinée aux objets pivotants pour lesquels SourceData es un Range (pas un cube OLAP).
Le saut d'erreur est inclus pour les tableaux croisés dynamiques, où "Valeurs" est affiché comme champ de colonne, car un tel champ de colonne n'a pas d'élément SourceName .

Private Sub ResetPivotfieldNames()
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim test As String

    For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables
            For Each pf In pt.PivotFields
                On Error Resume Next
                test = pf.SourceName
                If Err.Number = 0 Then
                    If pf.Name <> pf.SourceName Then
                        If MsgBox("On worksheet: " & ws.Name & vbCrLf & _
                            "in pivottable: " & pt.Name & vbCrLf & _
                            "the pivotfield: " & pf.SourceName & vbCrLf & _
                            "was renamed to: " & pf.Name, _
                            vbOKCancel, "Try to rename?") = vbOK Then
                                pf.Name = pf.SourceName
                        End If
                    End If
                End If
                On Error GoTo 0
            Next pf
        Next pt
    Next ws

End Sub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X