Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Mettre des noms sous une courbe en fonction des valeurs

  • Initiateur de la discussion Initiateur de la discussion rododom05
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

rododom05

XLDnaute Nouveau
Bonjour à toutes et tous.
J'ai une question concernant les graphiques Excel. J'ai une courbe représentant le temps de parcours et la vitesse d'un tramway en fonction de la distance parcourue. Et à chaque fois que la courbe de la vitesse tombe à 0, ça veut dire qu'il y a une fonction. Comment est-ce que je peux faire, sachant que les stations sont référencées, pour faire justement apparaître les noms des stations en-dessous de la courbe quand justement elle tombe à 0 ?
Je joins un petit fichier exemple à ma demande.

En vous remerciant par avance, je vous souhaite d'ores et déjà un bon week-end.

Rod'
 

Pièces jointes

Bonjour,
une possibilité un peu lourdingue mais peut être automatisable par macro : on crée une série pour chaque station et on en affiche l'étiquette. Voir pj

PS : n'y aurait-il pas moyen d'échantillonner les données pour avoir un peu moins de lignes ?
 

Pièces jointes

Bonjour,

Avant toute chose, je vous remercie d'avoir bien voulu prendre mon problème en considération.

Dugenou : non, je ne peux pas vraiment échantillonner, j'ai vraiment besoin d'autant de ligne, j'ai besoin de précision. Mais est-ce que la partie où justement il n'y a que les stations en fonction du Pk n'est pas un échantillonnage exploitable pour ce que je veux faire ?
Comment est-ce que tu automatises la création d'étiquettes ? Et est-ce que du coup, étant donné que ce procédé est voué à être utilisés pour pleins de lignes avec pleins de stations, est-ce qu'une automatisation de la création de séries est envisageable ?

Douguy : ta solution m'intéresse, mais pour une autre application dont j'ai besoin, merci pour cette aide ! 😀 Néanmoins pour ce que je souhaite là ça correspond moins à ce que je recherche. Ce que je souhaite c'est vraiment que le nom de chaque station apparaisse sous l'axe des x, juste en-dessous des Pk. C'est de l'habillage en fait, mais chaque station se placera au niveau de l'axe, là où il doit être !
 
Non, plutôt comme le précédent, avec si possible les Pk qui s'affichent tous les 1000 par exemple. Sinon si ce n'est pas possible et que ça fait vraiment trop fouillis, alors je prends avec les stations.
 
Bonjour rododom05, Dugenou, douguy,

Voyez le fichier joint et la macro du bouton :
Code:
Private Sub CommandButton1_Click()
Dim test As Boolean, t, i&, x As Variant
Application.ScreenUpdating = False
test = CommandButton1.Caption Like "Afficher*"
With ChartObjects(1).Chart
  .SetElement IIf(test, msoElementPrimaryCategoryAxisNone, msoElementPrimaryCategoryAxisShow) 'masque/affiche l'axe
  .Axes(xlCategory).AxisTitle.Text = IIf(test, " ", "Pk (m)") 'masque/affiche le titre de l'axe
  With .SeriesCollection(1)
    .HasDataLabels = False 'RAZ
    If test Then
      t = [B6].CurrentRegion.Resize(, 3) 'B6 à adapter
      For i = 2 To UBound(t)
        If t(i, 3) = 0 Then
          x = Application.VLookup(Round(t(i, 1)), [I6].CurrentRegion, 2, 0) 'RECHERCHEV, I6 à adapter
          If Not IsError(x) Then
            .Points(i - 1).ApplyDataLabels
            .DataLabels(i - 1).Text = x
          End If
        End If
      Next
      With .DataLabels
        .Position = xlLabelPositionBelow
        .Orientation = xlUpward
        .Format.TextFrame2.TextRange.Font.Bold = msoTrue 'gras
      End With
    End If
  End With
End With
CommandButton1.Caption = IIf(test, "Masquer", "Afficher") & " les stations"
End Sub
Nota : en I16 il faut 44 et pas 45...

A+
 

Pièces jointes

Dernière édition:
Bonjour rododom05, le forum,

Avec cette version (2) les DataLabels sont placés au-dessus de l'axe horizontal :
Code:
Private Sub CommandButton1_Click()
Dim test As Boolean, t, i&, x As Variant
Application.ScreenUpdating = False
test = CommandButton1.Caption Like "Afficher*"
With ChartObjects(1).Chart.SeriesCollection(1)
  .HasDataLabels = False 'RAZ
  If test Then
    t = [B6].CurrentRegion.Resize(, 3) 'B6 à adapter
    For i = 2 To UBound(t)
      If t(i, 3) = 0 Then
        x = Application.VLookup(Round(t(i, 1)), [I6].CurrentRegion, 2, 0) 'RECHERCHEV, I6 à adapter
        If Not IsError(x) Then
          .Points(i - 1).ApplyDataLabels
          .DataLabels(i - 1).Text = x
        End If
      End If
    Next
    With .DataLabels
      .Position = xlLabelPositionAbove
      .Orientation = xlUpward
      .Format.Fill.ForeColor.RGB = RGB(255, 255, 0) 'jaune
      .Format.TextFrame2.TextRange.Font.Bold = msoTrue 'gras
    End With
  End If
End With
CommandButton1.Caption = IIf(test, "Masquer", "Afficher") & " les stations"
End Sub
A+
 

Pièces jointes

Dernière édition:
Bonsour®
Quelques réflexions :
- quand la vitesse tombe à zéro cela ne signifie pas nécessairement que le tramway soit arrêté en station ...
- faire correspondre l'affichage d'une station à l'avancement du mobile n'est pas rationnel, les stations sont fixes !
- "ByDesign" les graphiques en nuage de points sont entachés d'un bug qui ne permet pas de façon native au niveau des étiquettes de points l'affichage d'autres choses que les valeurs X, Y et ou nom de série

réponse aux 1er et 2nd point :
utiliser une serie complémentaire pour afficher les stations :
=SERIE("gares";Feuil1!$I$7:$I$16;Feuil1!$J$7:$J$16;1)
réponse au point 3 :
sinon voir ce lien :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…