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

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

  • Fichier_exemple.xlsx
    810.6 KB · Affichages: 51

Dugenou

XLDnaute Barbatruc
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

  • rododom05.xlsx
    811.4 KB · Affichages: 51

douguy

XLDnaute Junior
bonjour
regardes ca si ca te convient
Bete formule à condition qui renseigne dans la colonne A le nom de la station
bon WE
 

Pièces jointes

  • Fichier_exemple (2).xlsx
    642.3 KB · Affichages: 45

rododom05

XLDnaute Nouveau
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 !
 

rododom05

XLDnaute Nouveau
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.
 

job75

XLDnaute Barbatruc
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

  • DataLabels(1).xlsm
    814.4 KB · Affichages: 29
Dernière édition:

job75

XLDnaute Barbatruc
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

  • DataLabels(2).xlsm
    814.9 KB · Affichages: 32
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
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

  • Fichier_COSMI RoRo.xlsm
    881.6 KB · Affichages: 43

Discussions similaires

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