OVH Cloud OVH Cloud

Positionnement Left du DataLabels.Point(1)

4 réponses
Avatar
Fredo P.
Bonjour Ts
Ci-dessous un enregistrement de macro. Pour ce qui est top , c'est simple
mais pour le left , comment fait on connaître la position sur la
.SeriesCollection(x).Points(1).( pour ex ci:99 et 146)
ActiveSheet.ChartObjects("Graphique 7").Activate
ActiveChart.SeriesCollection(3).DataLabels.Select
ActiveChart.SeriesCollection(3).Points(1).DataLabel.Select
Selection.Left = 99
Selection.Top = 1
ActiveChart.SeriesCollection(4).DataLabels.Select
ActiveChart.SeriesCollection(4).Points(1).DataLabel.Select
Selection.Left = 146
Selection.Top = 1

--
fredopst@9online.fr 'Ôtez toutes voyelles avant l'@

4 réponses

Avatar
Daniel
Bonjour.
Je ne comprends pas ta question. Puisque tu fixes la valeur à 99 et 146 ?
Pour connaître la valeur initiale :
PositGauche=Selection.Left
Cordialement.
Daniel
"Fredo P." a écrit dans le message de news:

Bonjour Ts
Ci-dessous un enregistrement de macro. Pour ce qui est top , c'est simple
mais pour le left , comment fait on connaître la position sur la
.SeriesCollection(x).Points(1).( pour ex ci:99 et 146)
ActiveSheet.ChartObjects("Graphique 7").Activate
ActiveChart.SeriesCollection(3).DataLabels.Select
ActiveChart.SeriesCollection(3).Points(1).DataLabel.Select
Selection.Left = 99
Selection.Top = 1
ActiveChart.SeriesCollection(4).DataLabels.Select
ActiveChart.SeriesCollection(4).Points(1).DataLabel.Select
Selection.Left = 146
Selection.Top = 1

--
'Ôtez toutes voyelles avant l'@




Avatar
Fredo P.
Salut Daniel
C'est un enregistrement effectué avec l'enregistreur de macro, donc en
déplaçant manuellement les "*Labels" , (je les place en haut et au centre de
l'ActiveChart.SeriesCollection(x).) ,J'ai cette ce bout de routine dont la
dernière ligne exécute approximativement ce que je veux obtenir mais c'est
un strata. pas trop catholique. Lorsque je mets 'Selection.Left X', tous
les datalabels se retrouvent les uns sur les autres sur la 1ière Collection.
ActiveChart.SeriesCollection(i).DataLabels.Select
With Selection.Font
.ColorIndex = xlAutomatic
.Size = 8
End With
Selection.NumberFormat = "0.00"
ActiveChart.SeriesCollection(i).Points(1).DataLabel.Select
Selection.Top = 1
'Selection.Left Int(Application.Sum(Sheets("graph").Range(Sheets("graph").Cells(4, 2),
Sheets("graph").Cells(4, i)))) * 15
Avatar
Daniel
Si j'ai bien compris, tu dois pouvoir faire un décalage comme suit :
'*** récupération de la valeur initiale :
ValeurGauche = ActiveChart.SeriesCollection(i).Points(1).DataLabel.Left
'*** Décalage :
ValeurGauche =ValeurGauche + ou - quelque chose
ActiveChart.SeriesCollection(i).Points(1).DataLabel.Left = ValeurGauche
Cordialement.
Daniel
"Fredo P." a écrit dans le message de news:

Salut Daniel
C'est un enregistrement effectué avec l'enregistreur de macro, donc en
déplaçant manuellement les "*Labels" , (je les place en haut et au centre
de
l'ActiveChart.SeriesCollection(x).) ,J'ai cette ce bout de routine dont
la
dernière ligne exécute approximativement ce que je veux obtenir mais c'est
un strata. pas trop catholique. Lorsque je mets 'Selection.Left X', tous
les datalabels se retrouvent les uns sur les autres sur la 1ière
Collection.
ActiveChart.SeriesCollection(i).DataLabels.Select
With Selection.Font
.ColorIndex = xlAutomatic
.Size = 8
End With
Selection.NumberFormat = "0.00"
ActiveChart.SeriesCollection(i).Points(1).DataLabel.Select
Selection.Top = 1
'Selection.Left > Int(Application.Sum(Sheets("graph").Range(Sheets("graph").Cells(4, 2),
Sheets("graph").Cells(4, i)))) * 15




Avatar
Fredo P.
Merci Daniel
"ActiveChart.SeriesCollection(i).Points(1).DataLabel.Left " prend
effectivement une valeur elle même étant fixée manuellement quand je ne les
vois pas (les DataLabels) à leurs bonnes positions. Ce qui serait
intéressant de savoir, ce sont les largeurs des Chart.Series.Collection ou
leurs positions sur la feuille graphique puisque apparemment les DataLabels
se positionnent également sur la feuille graphique.
Ma solution de les positionner en prenant les valeurs des cellules liées ne
serait pas si mauvaise que ça, à part que le multiplicateur (15) a été non
pas calculé mais recherché.

Selection.left=Int(Application.Sum(Sheets("graph").Range(Sheets("graph").Ce
lls(4, 2),

Sheets("graph").Cells(4, i)))) * 15