graph: trait et ligne de marquage par vba

Sheldor

XLDnaute Occasionnel
bonjour
je souhaite pouvoir manipuler le trait d'une série sur un graph sans impacter la ligne de marquage (le trait qui est autour du point)

voilà où j'en suis en pj

j'ai aussi essayé avec l'instruction border mais je ne peux pas lui attribuer une épaisseur sous forme de valeur (elle accepte apparemment xlthick etc) et s'il n'y a pas de trait je ne sais pas comment le mettre en "visible"

très grand merci pour votre aide
nico
 

Pièces jointes

  • graph_trait_ligne_marquage.xlsm
    22.9 KB · Affichages: 40

Sheldor

XLDnaute Occasionnel
re-bonjour,

je n'ai pas trouvé mais j'ai (un peu) avancé...
avec

ActiveChart.SeriesCollection(1).Format.Line.Visible = msoTrue
ActiveChart.SeriesCollection(1).Format.Line.Transparency = 1
ActiveChart.SeriesCollection(1).Border.Weight = 4

j'arrive à avoir un trait épais et pas de ligne de marquage mais je suis limité à 1/2/3/4 comme valeur d'épaisseur en utilisant "border"...
 

Jauster

XLDnaute Occasionnel
Hello,

Tu peux influencer sur les lignes de marquage avec :
ActiveChart.SeriesCollection(1).MarkerBackgroundColor = RGB(255, 0, 0) 'Pour du rouge ici
ActiveChart.SeriesCollection(1).MarkerForegroundColor = RGB(255, 0, 0) 'Pour du rouge ici

Ainsi en utilisant ce code j'arrive au résultat que tu souhaites :
VB:
With ActiveChart.SeriesCollection(1)
ActiveSheet.ChartObjects("Graphique 8").Activate
    .Format.Line.Visible = msoTrue
    .Format.Line.Weight = 5
    .MarkerSize = 10
    .MarkerBackgroundColor = RGB(255, 0, 0)
    .MarkerForegroundColor = RGB(255, 0, 0)
End With
 

Sheldor

XLDnaute Occasionnel
bonjour Jauster,
merci beaucoup pour cette réponse
ça me semble une très bonne idée !
du coup la ligne de marquage s'additionne à la taille de mon point ce que je n'avais pas prévu mais je peux peut être la modifier en fonction, je vais explorer ça

encore merci
nico
 

Sheldor

XLDnaute Occasionnel
pour que ça ne change pas la taille de mon point :

poids = 5

With ActiveChart.SeriesCollection(1)
.Format.Line.Visible = msoTrue
.Format.Line.Weight = poids
.MarkerSize = ActiveChart.SeriesCollection(1).MarkerSize - poids
.MarkerBackgroundColor = RGB(255, 0, 0)
.MarkerForegroundColor = RGB(255, 0, 0)
End With

par contre si j'ai une autre couleur de point je ne sais pas comment récupérer la couleur du MarkerBackgroundColor pour l'appliquer à MarkerForegroundColor ...
 

Sheldor

XLDnaute Occasionnel
en résumé pour ceux qui liraient ça plus tard...

- on ne peut pas agir sur le trait d'un graph "nuage" sans agir sur la ligne de marquage (le trait qui entoure le point)
- la jolie solution grâce à Jauster pour contourner ça: passer la ligne de marquage de la même couleur que le point et redimensionner le point pour que la somme (épaisseur de la ligne de marquage + taille du point) = taille d'origine du point

poids = 5 ' l'épaisseur souhaitée

With ActiveChart.SeriesCollection(1)
.Format.Line.Visible = msoTrue
.Format.Line.Weight = poids
.MarkerSize = ActiveChart.SeriesCollection(1).MarkerSize - poids
.MarkerForegroundColor = .MarkerBackgroundColor
End With

- la limite: on ne peut pas avoir un point plus petit que l'épaisseur de la ligne
 

Discussions similaires

Statistiques des forums

Discussions
315 082
Messages
2 116 031
Membres
112 640
dernier inscrit
rachidqadmir