[Graphique] Masquer les étiquettes de données vides avec 'Valeurs à partir

Bonjour,

Dans un classeur de gestion de budget, j'ai créé un graphique sous forme d'histogramme pour comparer des sommes budgétées et des sommes dépensées par catégories de dépense.
Le but de ce graphique étant de faire ressortir les catégories pour lesquelles le budget a été dépassé, j'ai choisi comme axe vertical les valeurs en pourcentage, ceci afin que tous les budgets soient au même niveau, quelque soit leur montant en €uro.

J'ai prévu 4 couleurs d'histogrammes pour mettre en évidence les catégories en fonction du pourcentage du budget consommé.

Pour les étiquettes de données, je ne souhaite pas affiché les valeurs en %, mais les valeurs en €.
J'ai donc utilisé l'option d'étiquette "Valeur à partir des plages".

Ceci fonctionne bien, sauf pour les valeurs nulles : la couleur de fond des étiquettes des valeurs nulles apparait.
J'ai essayé 2 choses, sans succès :
- Mettre des "#N/A" à la place des cellules vides. Mais dans ce cas, c'est encore pire, car les étiquettes affichent "#N/A"
- Format personnalisé des étiquettes "#,##0;-#,##0;" mais ça ne marche pas non plus.

Le format personnalisé semble fonctionné lors de sa mise en place, mais après fermeture et réouverture du fichier, le problème des étiquettes fantômes est de nouveau présent.

Sauriez-vous comment faire ?

19classeur1.xlsx (22.25 Ko)
capture

une possibilité = supprimer les étiquettes des valeurs = 0 avec VBA ?

Bonjour piratman, BsAlv (Bart ),

Peut-être comme ceci.

En fait, dans le tableau, c'est NA() qu'il faut entrer dans les formules et à ce moment le graphique ne fait pas apparaître les valeurs nulles.

En revanche, il faut modifier l'apparence du tableau avec une mise en forme conditionnelle...

image

Cordialement.

AL 22

Bonjour BsAlv, AL 22,

@BsAlv : Une solution par macro ne me semble pas la voie dans laquelle aller pour réaliser ce genre de chose, mais à défaut de trouver une autre solution fonctionnelle, je serai intéressé de connaitre la commande à utiliser pour parcourir toutes les étiquettes de données d'une série.

@AL 22 : J'avais utilisé la solution avec NA() avant de venir poser la question ici, et je pensais que ça fonctionnait. Mais après une fermeture/réouverture du fichier, le problème était réapparu. J'ai donc peur qu'avec cette solution, il ressurgisse un moment ou l'autre.
De plus, dans mon fichier réel (celui mis sur ce Topic est un extrait simplifié), cela ne fonctionne pas du tout et affiche directement "#N/A" dans les étiquettes.
La différence entre les fichiers c'est que tout le tableau source pour le graphique est issu d'une formule FILTER.

Y-a-t'il une autre manière de procéder ? Quelqu'un a peut-être une idée de contournement de ce problème, à défaut de pouvoir le régler.

Merci en tout cas pour votre aide !

re, AL 22

à lancer chaque fois un valeur change de 0 à ... ou de ... a 0

On peut encore changer d'autres choses du graphique dans la macro

24classeur1-72.xlsb (36.51 Ko)
Sub Graphique2()
     With Sheets("Feuil1").ChartObjects("graphique 2").Chart
          For i1 = 1 To .FullSeriesCollection.Count
               With .FullSeriesCollection(i1)
                    On Error Resume Next
                    .DataLabels.Delete       '(essayer à) supprimer les labels existants
                    On Error GoTo 0
                    .ApplyDataLabels         'nouveau labels
                    LabelRange = "='Feuil1'!" & Range("M3:M14").Offset(, IIf(i1 = 1, -8, i1 - 2)).Address     'plage des valeurs que vous voulez montrer
                    With .DataLabels         'ces labels
                         .Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, LabelRange, 0     'la plage
                         .ShowRange = True   'montrer les valeurs de la plage
                         .ShowValue = False  'cacher les valeurs des points
                         .Position = xlLabelPositionInsideEnd     'position du labels
                         If i1 = 1 Then      'pour montrer que ce label est différent du reste = autre format
                              .Position = xlLabelPositionInsideBase     'valeur juste au dessus de l'axe X
                              With .Format.TextFrame2.TextRange.Font
                                   .Bold = True
                                   .Size = 12
                              End With
                         End If
                    End With
                    'y = .Values
                    'For i = LBound(y) To UBound(y)
                    '     If y(i) = 0 And 0 Then .Points(i).DataLabel.Delete
                    'Next
               End With
          Next
     End With
End Sub

Bonsoir BsAlv,

merci pour ce code, c'est propre et ça marche bien.

J'ai vu que tu as eu l'idée de décaler les histogrammes les uns par rapport aux autres, ce qui rend le graphique plus lisible.
Par contre, ce qui me dérange (je suis pointilleux, on ne se refait pas), c'est que les histogrammes sont tous décalés les uns par rapport aux autres, alors qu'il faudrait que tout ceux de couleur soient 'empilés', avec seulement celui du budget (gris) de décalé.
Je n'ai pas trouvé comment réaliser cela, car le paramètre de superposition est commun à tous les histogrammes.
Saurais-tu faire, ou aurais-tu une idée ?

re,

la série grise est maintenant sur le premier axe-Y, les autres sur le deuxième et comme ça, ce sont 2 différents "Chartgroups". Le premier est en arrière-plan. Maintenant vous pouvez modifier les 2 paramètres (overlap = tout les 2 100% et distances entre les séries = le gris plus petit que les autres) pour chaque "Chartgroup".

C'est important que le minimum et le maximum des 2 axis-Y sont les mêmes !!! (J'ai supprimé la notation du 2ième Y-axe)

14classeur1-72.xlsb (37.50 Ko)

re,

j'ai compris ce que tu as mis en place, tu as séparé la série grise des autres, et en lisant ton message j'ai cru que j'allai pouvoir faire ce que je voulais.
Mais malgré plusieurs essais, je n'y parviens pas :
Je souhaite que les 5 séries aient la même largeur d'histogramme, et que les 4 séries Vert, Jaune, Orange, Rouge soient décalées de la même valeur par rapport à la série grise.

Puisque maintenant la série grise est dans un Chartgroup différent des autres, je pensais qu'en jouant sur l'overlap de la série grise, j'y arriverai. Mais non, la modification de la valeur n'a pas d'effet visuel.
Et si je modifie l'overlap du Chartgroup 2, les 4 séries de couleurs se retrouvent décalées de valeurs différentes les unes par rapport aux autres.

Le résultat que je souhaite obtenir, c'est ceci :

capture

re,

il faut vérifier le type de série dans mon fichier de hier soir, excusez-moi, mais mon excel n'est pas francophone, mais quand vous ouvrez mon fichier, ce sera en français. Le graphique est du type "combinatie", la série "Budget" est du type "gestapelde kolom" sur le axe 1, les autres sont "gegroepeerde kolom" sur l'axe 2.

Comme ça, les autres se trouvent au milieu de la série grise (je ne sais pas décaler vers gauche ou droite)

schermafbeelding 2023 12 07 130341

Bonjour à tous,

Si j'ai bien compris votre souhait, et si vous voulez créer un effet de décalage des séries, voici un graphique composé de séries en Nuage de points et de barres d'erreur.
Le décalage de la série "Budget" est ajustable en modifiant les valeurs en colonne 'S'. La position des étiquettes associées sont modifiables en colonne 'U' (nom des catégories et valeurs du budget plus ou moins à gauche ou à droite pour les centrer). L'affichage de certaines options secondaires ont été désactivées mais sont bien présentes (axes). N'oubliez pas, les pseudo barres d'histogramme ne sont que des barres d'erreur !

Plus aucun problème d'étiquettes fantôme...

image

Attention, il s'agit du classeur de base sans macro.

J'espère ne pas trop vous "embrouiller" avec ce post !

Cordialement.

AL 22

Bonjour BsAlv, AL 22,

Merci beaucoup pour votre aide, j'ai maintenant 2 solutions différentes, qui ne font pas exactement la même chose, mais il ne me reste plus qu'à choisir celle qui convient le mieux à mon appli.

@AL 22 : Beau contournement dans ta dernière proposition, pour réaliser ce que je souhaite, mais d'une manière détournée !
Rechercher des sujets similaires à "graphique masquer etiquettes donnees vides valeurs partir"