VBA-->Graph X-Y :Obtenir le numero du point sélectionné

Hellboy

XLDnaute Accro
Bonjour,

J'essaie de trouver comment ont fait récupérer le numéro du point qui serait sélectionné dans un graphique de type coordonnée X & Y.
Exemple: ActiveChart.SeriesCollection(1).Points(318).Select

Ce que je voudrais récupérer c'est le "318".

Merci de votre aide !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA-->Graph X-Y :Obtenir le numero du point sélectionné

Bonjour Hellboy,

Une piste ?

Après quelques recherches, voir le lien ci-contre: Utiliser les évènements dans les graphiques Excel (j'ai trouvé l'article excellent)

Un petit essai pour deux graphiques inclus dans une feuille graphique. Sélectionner un graphique puis un point de ce graphique affiche l'index du point du graphique sélectionné ainsi que l'index du graphique auquel le point appartient.

La page citée ci-dessus comprend un fichier téléchargeable pour application à des graphiques inclus dans une feuille de calcul (passage par un module de classe)
 

Fichiers joints

Hellboy

XLDnaute Accro
Re : VBA-->Graph X-Y :Obtenir le numero du point sélectionné

Bon matin du Québec,

Désolé du délais de réponse.
Merci de l'information, car je vais me servir de cette méthode pour arriver à mes fins.
 

Hellboy

XLDnaute Accro
Re : VBA-->Graph X-Y :Obtenir le numero du point sélectionné

Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
Dim IndexduPoint as Long
IndexduPoint = Arg2
End sub

Je dois avouer que ce que je cherchais se retrouve de cette façon avec l'évènement Graphique. Mais finalement, l'index du point ne correspond pas nécessairement & logiquement, à son adresse sur la feuille de calcul. Alors, finalement je cherche le moyen de connaître sont adresse. Est-ce possible ?
Merci !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA-->Graph X-Y :Obtenir le numero du point sélectionné

Bonsopir Hellboy
Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
Dim IndexduPoint as Long
IndexduPoint = Arg2
End sub

Je dois avouer que ce que je cherchais se retrouve de cette façon avec l'évènement Graphique. Mais finalement, l'index du point ne correspond pas nécessairement & logiquement, à son adresse sur la feuille de calcul. Alors, finalement je cherche le moyen de connaître sont adresse. Est-ce possible ? Merci !
Un essai dans le fichier joint. Sélectionner un point affiche ses valeurs X et Y, puis on sélectionne dans les données sources la première ligne contenant X et Y, enfin on affiche l'adresse des cellules sources du point.
 

Fichiers joints

Dernière édition:

Hellboy

XLDnaute Accro
Re : VBA-->Graph X-Y :Obtenir le numero du point sélectionné

Bonjour mapomme,

Merci pour votre aide !
Il me reste à compléter l'action que je veux faire lorsque la correspondance est trouvé. Je ne pensais pas qu'il aurait fallut rouler en boucle pour la recherche. mais bon, ça fonctionne bien. Étant donnée que mes données sont trié en ordre croissant pour le X, j'aurais pu faire tout d'abord une recherche de la première valeur de X et ensuite boucler à partir de cet endroit seulement. On verra !

Voici ce que j,ai retnu de votre partage.
Merci encore pour votre aide.

Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)


Dim X As Double, Y As Double, SX As String, SY As String, SXC As Long, SYC As Long, _
SXRStart As Long, SXREnd As Long, I As Long, F As String, SF As String, SR As String

If ElementID = xlSeries Then
If Not Arg2 = -1 Then

X = WorksheetFunction.Index(ActiveChart.SeriesCollection(1).XValues, Arg2)
Y = WorksheetFunction.Index(ActiveChart.SeriesCollection(1).Values, Arg2)

F = ActiveChart.SeriesCollection(Arg1).FormulaR1C1 ' Préfère travailler en Nombre qu'en "String"
SF = Split(Mid(F, InStr(1, F, "(") + 1), "!")(0)
SF = Replace(SF, "'", "")
SX = Split(F, ",")(1)
SY = Split(F, ",")(2)
SXC = VBA.CLng(Mid(SX, InStrRev(SX, "C") + 1))
SYC = VBA.CLng(Mid(SY, InStrRev(SY, "C") + 1))
SXRStart = VBA.CLng(Mid(SX, InStrRev(SX, "C") + 1))
SXREnd = VBA.CLng(Mid(SX, InStrRev(SX, "R") + 1, InStrRev(SX, "C") - InStrRev(SX, "R") - 1))
'SYR = Mid(SX, InStrRev(SY, "C") + 1)


'Set RangeX = SH.Range(SR)
With Sheets(SF)
For I = SXRStart To SXREnd
If .Cells(I, SXC).Value2 = X And .Cells(I, SYC).Value2 = Y Then
Exit For
End If
Next I
End With

End If
End If
End Sub
 

Discussions similaires


Haut Bas