Microsoft 365 Graphique camembert légende sans valeur nulle ou négligeable

rcan7412

XLDnaute Occasionnel
Bonjour,

Je sèche sur le problème suivant. Je souhaite présenter un graphique de type camembert qui écarte les valeurs inférieures à 1 % tant au niveau du camembert que de la légende.

J'arrive à écarter du camembert les valeurs inférieures à 1 % avec " #N/A".
=SI(D2>(0,01*$F$1);D2/$F$1;#N/A)

Mais je souhaiterais que ces valeurs soient également écartées de la légende. Je ne sais pas comment faire.

En annexe un fichier qui illustre mon problème.

Je serais heureux d'avoir une piste s'il y en a une ?

Merci
 

Pièces jointes

  • GraphiqueSansValeurNégligeable.xlsx
    17.7 KB · Affichages: 16

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans le fichier joint, deux macros, l'une pour supprimer les légendes dont l'élément de série est null et l'autre pour toutes les réafficher et une troisième pour appeler l'une ou l'autre sur clique d'un rectangle servant de bouton
Code:
Sub AfficherSupprimerLegende()
    Dim shp As Shape
    If TypeName(Application.Caller) <> "String" Then Exit Sub
    On Error GoTo FIN
    '
    ' Récupération du shape ayant déclenché la macro
    Set shp = ThisWorkbook.Sheets("Feuil1").Shapes(Application.Caller)
    '
    ' suivant son texte affiché, on lance l'une ou l'autre des macros
    ' puis on change son texte pour le prochain appel
    If shp.TextFrame.Characters.Text = "Supprimer les légendes nulles" Then
        SuppressionLégendesNulles
        shp.TextFrame.Characters.Text = "Afficher toutes les légendes"
    Else
        AfficherToutesLesLegendes
        shp.TextFrame.Characters.Text = "Supprimer les légendes nulles"
    End If
FIN:
End Sub


Sub SuppressionLégendesNulles()
    Dim oChart As Chart
    Dim i As Integer
    Dim tbl As Variant
    '
    ' Obtenir le graphique
    Set oChart = Sheets("Feuil1").ChartObjects("Graphique 1").Chart
    '
    ' Obtenir les valeurs de la serie 1
    tbl = oChart.SeriesCollection(1).Values
    '
    ' Parcourir les valeurs du BAS vers le HAUT (important)
    For i = UBound(tbl) To 1 Step -1
        '
        ' si l'une est vide, on supprime sa legende
        If IsEmpty(tbl(i)) Then oChart.Legend.LegendEntries(i).Delete
    Next

End Sub

Sub AfficherToutesLesLegendes()
        '
        ' Se contente d'afficher les légendes du graphique
        ' telles qu'ells étaient au moment de la création.
    With Sheets("Feuil1").ChartObjects("Graphique 1").Chart
        .SetElement (msoElementLegendNone)
        .SetElement (msoElementLegendRight)
    End With
End Sub


Cordialement
 

Pièces jointes

  • GraphiqueSansValeurNégligeable.xlsm
    26.7 KB · Affichages: 2

rcan7412

XLDnaute Occasionnel
Merci pour ta solution Reblochon.;)

Une autre solution sans macro a été proposée par CB60. La voici :

https://www.excel-downloads.com/threads/graphique-secteur-et-valeur-nulle.134275/

Elle passe par un tableau intermédiaire.
Elle nécessite un peu de boulot mais le résultat est celui escompté et sans macro (selon les usages) : elle ne conserve que les valeurs sélectionnées selon un critère ( plus que 1% par exemple) et ne présente dans le graphique que ces valeurs filtrées et les libellés associés à ces valeurs filtrées dans la légende.

Cette solution fait notamment appel à : GRANDE.VALEUR, NB, INDEX, EQUIV, SOMMEPROD

Elle fonctionne également avec des tables de longueur variable avec les plages définies dynamiquement avec la fonction DECALER.

Merci en tout cas du partage :)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
Une autre solution sans macro
Arf.... quand je propose sans macro.... et si je propose avec.... non plus :)

Alors ici une version avec formule agregat (plus en accord avec votre version excel).
Voir le tableau derrière le graph

Cordialement
 

Pièces jointes

  • GraphiqueSansValeurNégligeable.xlsx
    19.4 KB · Affichages: 4

rcan7412

XLDnaute Occasionnel
Bonjour,

Arf.... quand je propose sans macro.... et si je propose avec.... non plus :)

Alors ici une version avec formule agregat (plus en accord avec votre version excel).
Voir le tableau derrière le graph

Cordialement
Bonjour Roblochon,

On ne va pas faire la fine bouche, on s'incline quand on ne maîtrise pas comme moi :rolleyes:
Parfois c'est mieux sans macro.

Où peut-on trouver des infos sur agregat ?
Est-ce plus facile à déployer ?

Merci
 

Hasco

XLDnaute Barbatruc
Repose en paix
Où peut-on trouver des infos sur agregat ?
Sur l'aide en ligne.

En gros agregat permet d'appliquer une formule à une matrice en évitant zappant les erreurs ou les lignes cachées et autres options du genre. Ici la formule appliquée est Petite.Valeur (premier paramètre), en évitant les erreurs (6 du deuxième paramètre), et en produisant des erreurs par des divisions pas zéro si le test est faux (faux = 0) :
LIGNE(Tableau1[Passif])-LIGNE(Tableau1[#En-têtes])/(Tableau1[ValSup10%]>1%)

Cordialement
 

rcan7412

XLDnaute Occasionnel
Oui ? Merci. Mais encore ?

Cordialement
Dans le fichier annexe les pourcentages sont dans la légende comme demandé par merinos.

J'ai juste ajouté la plage suivante pour les étiquettes de la légende : Graph_Datas4 : =DECALER(Feuil1!$H$2:$I$2;;;NB.SI(Feuil1!$G$2:$G$13;">0"))

Et placé cette plage dans la source de données du graphique (étiquette de l'axe horizontal)

Cordialement
 

rcan7412

XLDnaute Occasionnel
Sur l'aide en ligne.

En gros agregat permet d'appliquer une formule à une matrice en évitant zappant les erreurs ou les lignes cachées et autres options du genre. Ici la formule appliquée est Petite.Valeur (premier paramètre), en évitant les erreurs (6 du deuxième paramètre), et en produisant des erreurs par des divisions pas zéro si le test est faux (faux = 0) :


Cordialement
Sans macro, n'est-il pas possible de trier les données par pourcentage ? Par exemple décroissant ?

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re bonjour,
Sans macro, n'est-il pas possible de trier les données par pourcentage ? Par exemple décroissant ?

J'essaierai demain avec un double agregat. Si pas possible il faudra passer par un second tableau intermédiaire, ça fait beaucoup. Non ?


@merinos dans le fichier joint, j'ai inclus les % dans les légendes de la requête après avoir regrouper les légendes et sommer les % et Valeur.
 

Pièces jointes

  • Merinos -GraphiqueSansValeurNégligeable.xlsx
    107.7 KB · Affichages: 6

rcan7412

XLDnaute Occasionnel
Re bonjour,


J'essaierai demain avec un double agregat. Si pas possible il faudra passer par un second tableau intermédiaire, ça fait beaucoup. Non ?


@merinos dans le fichier joint, j'ai inclus les % dans les légendes de la requête après avoir regrouper les légendes et sommer les % et Valeur.
Quelle maîtrise, ça fait rêver...

Oui pour le tri décroissant, c'est plus une question bonus, pas essentiel.

Merci beaucoup en tout cas pour cette interactivité un dimanche ;).
J'ai appris une nouvelle technique aujourd'hui grâce à ces agregats.
 

rcan7412

XLDnaute Occasionnel
Re-bonjour,

Je pense que je vais devoir abandonner l'idée de cette liste dynamique des éléments du camembert et de la légende en écartant les valeurs de moins de 1%.

Les raisons :
J'utilise un graphique camembert à double tracé. Je souhaite afficher des valeurs précises dans le second tracé.
Quand j'actualise avec de nouvelles données qui modifient le nombre de lignes, des données du second tracé sont déplacées vers le premier tracé.

L'autre problème, c'est les couleurs. Idem elles varient en fonction du nombre de lignes.

En d'autre terme je souhaiterais figer la couleur et l'appartenance au tracé (1 ou 2) en fonction du type de données.

Je ne vois pas comment surmonter le ce problème.

😢
 

Statistiques des forums

Discussions
315 133
Messages
2 116 603
Membres
112 802
dernier inscrit
Dan Marc