Position étiquettes de données dans un graphique

Bonjour à tous!

Je suis nouveau sur le forum ainsi qu'en VBA

J'ai construis un graphique via VBA, grâce à plusieurs postes trouvés. Cependant, j'ai 2 problèmes qui subsistent:

- Les étiquettes de données, de chaque boite à moustache, sont décalées vers le bas et centrées.

Je souhaiterais les mettre en face de leur section respective (max , min, Q1, ...) et les décaler légèrement sur la droite pour que ce soit plus lisible.

- la moyenne s'aligne sur sa propre échelle et est décalée sur la droite.

Je voudrais qu'elle s'aligne sur la même échelle que les autres données et qu'elle soit centrée sur la boite à moustache.

Mon propos sera plus explicite avec le fichier joint

D'avance un grand merci pour vos réponses!

BZH83

32boxplot2.xlsm (40.06 Ko)

Bonjour,

A la fin de votre code "Data", pour modifier les éléments graphiques vous pouvez ajouter ce code :

    ActiveChart.Location Where:=xlLocationAsObject, Name:="Graph"    ' Déplacement du graphique dans la feuille "Graph"

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Moyenne sur axe principal
    ActiveChart.FullSeriesCollection(6).Select
    ActiveChart.FullSeriesCollection(6).AxisGroup = 1
'Modification format nombre de la moyenne (1 décimale)
    ActiveChart.FullSeriesCollection(6).DataLabels.Select
    Selection.NumberFormat = "# ##0,0"

'Déplacement des étiquettes de données à droite du graphique (augmentation de la marge à gauche des étiquettes + position de l'étiquette en bord intérieur)
    ActiveChart.FullSeriesCollection(5).DataLabels.Select
    Selection.Position = xlLabelPositionInsideEnd
    Selection.Format.TextFrame2.MarginLeft = 25.5118110236
    ActiveChart.FullSeriesCollection(1).DataLabels.Select
    Selection.Position = xlLabelPositionInsideEnd
    Selection.Format.TextFrame2.MarginLeft = 25.5118110236
    ActiveChart.FullSeriesCollection(2).DataLabels.Select
    Selection.Position = xlLabelPositionInsideEnd
    Selection.Format.TextFrame2.MarginLeft = 189.9212598425
    ActiveChart.FullSeriesCollection(3).DataLabels.Select
    Selection.Position = xlLabelPositionInsideEnd
    Selection.Format.TextFrame2.MarginLeft = 189.9212598425
    ActiveChart.FullSeriesCollection(4).DataLabels.Select
    Selection.Position = xlLabelPositionInsideEnd
    Selection.Format.TextFrame2.MarginLeft = 189.9212598425
    ActiveChart.FullSeriesCollection(5).DataLabels.Select
    Selection.Position = xlLabelPositionInsideEnd

    ActiveChart.PlotArea.Select
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Application.ScreenUpdating = True

La 1ère et la dernière ligne sont des lignes de votre code.

Par contre vous avez un problème avec vos données. Si vous regardez votre graphique, votre max alpha = 84, se situe sur votre graphique au-delà de 200. Dans votre type de graphique, vous utilisez des histogrammes empilés, donc votre max graphique = min + Q1 + Q2 + Q3 + max.

Ce que je vous préconise, dans votre calcul de données, calculez votre min comme vous le faites. Puis Q1 = calcul du Q1 - min. Puis Q2 = calcul du Q2 - Q1 - min. etc... Cela vous donnera un graphique cohérent.

Par contre vous aurez alors un problème avec vos valeurs d'étiquettes qui afficheront la hauteur de chaque histogramme au lieu de la valeur souhaitée. Q1 = 17 car 29 - 12, et c'est 17 qui s'affichera au lieu de 29.

Cindy

Bonjour Cindy,

Merci pour la rapidité de votre réponse!

Pour la moyenne ça fonctionne à merveille!

Pour ce qui est des étiquettes de données et de l'échelle, serait-il possible de plutôt adapter l'échelle au valeurs présentes sur le graphique? Les histogrammes empilés présentent cette particularité de compiler les données mais modifier les formules, comme vous me l'avez judicieusement suggéré, n'est pas concluant car c'est trop complexe... Après il est possible que je ne m'y prenne pas comme il faut

Merci!

BZH83

Re-bonjour,

Vous avez de la chance, je suis en reconversion freelance macros vba et j'ai besoin de faire mes preuves grâce à ce genre de sujets.

Le plus facile est de créer 2 types de données :

  • celles pour faire la partie graphique (les boites), ce que vous avez fait. Les étiquettes seront donc à cacher.
  • celles pour faire les étiquettes. La partie graphique sera cachée.
Et donc superposer ces 2 types.

Dans votre fichier, j'ai modifié vos noms de série avec un suffixe "HIST" pour histogrammes. Le calcul est fait par macro, comme vous l'aviez fait mais j'ai modifié les calculs pour faire comme ce que je vous expliquais dans mon 1er message. Et j'ai créé de nouvelles séries Min, Max, ... avec les calculs que vous aviez.

Je vous joins votre fichier avec les modifications.

J'espère avoir pu répondre à votre demande. Si c'est le cas, n'oubliez pas de valider ma réponse.

Cindy

102boxplot2.xlsm (38.69 Ko)

Bonjour Cindy,

C'est absolument magnifique! Ça fonctionne à merveille!

Cela fait plus de 3 semaines que je suis dessus et je peux maintenant clore le sujet

Un grand merci pour votre aide précieuse!

Bonne soirée!

Rechercher des sujets similaires à "position etiquettes donnees graphique"