Positionne un Label entre deux points du graphique

mhdingbi

XLDnaute Nouveau
Bonjour à tous,
J'avais un problème à vous soumettre. J'ai créé des labels graphiques sur VBA pour une ligne que j'ai créée pour délimiter les droites sur l'axe Y. Maintenant je veux positionner ce Label entre le point où j'ai affecté ce label (C'est à dire le point(2)) et le point précédent (le point(1)) car ce label présente le pourcentage délimiter par les deux points (Une image est jointe). Maintenant voici le code.
VB:
For i = 20 To 20 + NombreDeClasse - 1
        Set SerieDonnnees = GraphiqueGranulometrie.FullSeriesCollection(i)
      
        With SerieDonnnees.Points(2)
            .ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False, AutoText:=True, HasLeaderLines:=False
          
            .DataLabel.Text = AideGranulométrie.Range("AideGranulométrie.PourcentageGraviers" & i - 20).Text
            .DataLabel.Position = xlLabelPositionLeft
            .DataLabel.Top = .DataLabel.Top + 70
            '.DataLabel.Left = .DataLabel.Left - 50
          
            With .DataLabel.Font
                .Color = SerieDonnnees.Border.Color
                .Size = 15
                .Name = "Segoe UI Semibold"
                .Bold = True
            End With
                  
        End With
    Next i

Je veux que la propriété .Top récupère la propriété .Top du Point(1) et le combine avec le .Top du Point(2) et se positionner entre les deux.
Remarque: j'ai pas créer de Label pour le premier point.
Graphique Granulométrie.PNG
 
Dernière édition:

Joël GARBE

XLDnaute Nouveau
Bonjour m...

Je pense qu'il va falloir que tu reformules la question, car pour moi, elle est absconse.

S'il s'agit de mettre le label en question au milieu de la flèche dessinée par exemple, tu peux te servir des propriétés .top et .height de la flèche

s'il s'agit d'autre chose, merci d'être plus précis.
 

mhdingbi

XLDnaute Nouveau
Au fait; c'est une série avec deux points j'y ai mis des flèche initiale et finale pour des fins visuels et de délimitation. Le reste aussi c'est la même chose. Je ne les ai pas dessiné.
Je veux placer le Label au milieu de la série qui est constituée de deux points.
Si ce n'est pas assez claire vous me le dites.
Cordialement!
 

Joël GARBE

XLDnaute Nouveau
Bonjour,

Je reviens sur le sujet, après réflexion...

Comme il m'est difficile de manipuler les points d'une série de graphique, si je devais faire ce qui est demandé, et à condition qu'il s'agisse d'indiquer les informations chiffrées (par exemple la moyenne de 2 points dans un label je procèderais ainsi (avant de me creuser trop la cervelle sur le VBA :

Je créerais une nouvelle série... sur le point d'abscisse où le label doit apparaître, j'inscris la valeur à afficher
Faire cela pour les différentes abscisses
Ajouter cette nouvelle série au graphique (avec un beau Copier/coller, c'est cool, dans les propriétés, supprimer les traits et les marqueurs, et ajouter les étiquettes de données (valeur)
capture.png
 

mhdingbi

XLDnaute Nouveau
Bonjour Joel,
Désolé d'avoir réagit si tardivement. Au fait j'ai essayé la propriété .Top des points du graphique et ça a a marché. Voici le résultat
VB:
For i = 20 To 20 + NombreDeClasse - 1
        Set SerieDonnnees = GraphiqueGranulometrie.FullSeriesCollection(i)
        Set SerieDonneesParent = GraphiqueGranulometrie.FullSeriesCollection(i - 19)
      
        With SerieDonnnees.Points(2)
            .ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False, AutoText:=True, HasLeaderLines:=False
          
            .DataLabel.Text = SerieDonneesParent.Name & ": " & AideGranulométrie.Range("AideGranulométrie.PourcentageGraviers" & i - 20).Text
                                
            .DataLabel.Position = xlLabelPositionCenter
            Position1 = SerieDonnnees.Points(1).Top
            Position2 = .Top
            PositionTop = (Position1 - Position2) / 2 + Position2 - .DataLabel.Height / 2
            .DataLabel.Top = PositionTop
            .DataLabel.Left = .DataLabel.Left - 5
                  
        End With
    Next i

J'espère que cela vous sera utile.
Et merci pour les suggestions.
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16