coordonnées X et Y de la souris sur graphique excel ?

dou129

Nouveau membre
Bonjour,

Je cherche à récupérer les coordonnées X et Y du pointeur de la souris lorsque je clique sur un graphique Excel. Ce graphique est inséré directement sur la page excel et non dans une fenêtre à part.
Savez vous si cela est réalisable ? quelle(s) fonction(s) vba utiliser ?

Le but final de la manip est de tracer une droite entre 2 points (entre 2 clics)

Je vous remercie par avance pour votre aide.
 

Freeman23

Expert
Tout ce que je dire c'est qu'il faut passer par l'objet Chart.

J'ai trouvé ce lien en espérant que ca puisse t'aider :

 

dou129

Nouveau membre
Mercic Freeman 23 pour cette info
Tout ce que j'arrive à faire pour l'instant c'est ça :
[cpp]Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim ElementID As Long
Dim Arg1 As Long
Dim Arg2 As Long
Dim v As Variant
GetChartElement x, y, ElementID, Arg1, Arg2
MsgBox ("X = " & x & " / Y = " & y)
End Sub
[/cpp]
Cela permet d'afficher les coordonnées du pointeur de la souris si le graphique est dans un onglet et non intégré à une feuille Excel.
Avec ce que tu m'a donné je devrai m'en sortir. Je vais voir ça ce WE.

Il semble qu'il y ai une solution, donc le problème est bien réel.
 

Freeman23

Expert
Si tu restes bloquer n'hésites pas à poster ton avancement, j'essairais de t'aider vu que le sujet m'interresse :D
 

dou129

Nouveau membre
Pour tous ceux qui s'impatientent voici le fruit de mes réflexions de ce début de WE.
J'arrive à récupérer les coordonnées X et Y de la souris sur le graphique incorporé dans une feuille Excel. En fait il "suffit" de créer un module de classe "graphique" lequel existe déjà dans excel et reconnait les "mouse down", les "mouse up" et les "mouse move"

Créez un nouveau module de classe, il s'appelle classe1 par défaut. Je l'ai laissé comme ça(en fait je n'arrive pas à le modifier)
Il faut placer "Public WithEvents mychartclass As Chart" en tête de classe. Voici le code de la classe :
[cpp]Public WithEvents mychartclass As Chart

Private Sub mychartclass_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Range("A9") = x
Range("B9") = y
End Sub

Private Sub mychartclass_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Range("A8") = x
Range("B8") = y
End Sub
[/cpp]
Ensuite il faut activer cette classe à partir du module de la feuille excel (sheet1 chez moi). La sub "initializechart" est reliée à un bouton de commande sur la feuille Excel. Voici le code :
[cpp]Dim myClassModule As New Classe1

Private Sub initializechart()
Set myClassModule.mychartclass = Sheet1.ChartObjects(1).Chart
End Sub
[/cpp]
Avec ça vous verrez apparaitre les coordonnées du pointeur de votre souris dans les cases A8 et B8.
"Il ne reste plus qu'à" lier ces coordonnées à une ligne qui sera tracée sur le graphique.
Pour l'instant je ne parviens pas à le faire mais cela va venir.

La suite au prochain épisode...
 

Freeman23

Expert
Alors pour modifier le nom de tes classes et modules, il faut faire apparaître l'explorateur de projet et la fenêtre de propriété. Une fois que tu as sélectionné le module concerné dans les propriété tu auras accès au nom. Penses pour la classe à modifier la ligne de création de l'instance.

Ensuite pour la suite, je pense pas qu'il existe de commande qui permet de tracer une ligne à partir de valeur. Donc le mieux est que tu stockes tes valeurs sur un onglet "Data" dans 2 colonnes une pour les X et l'autre les Y.
Ensuite tu met à jour la source de donnée du graphique avec la fonction de l'objet Chart : SetSourceData

Bonne chance pour la suite.
 

dou129

Nouveau membre
En fait je n'ai rien dans la fenêtre propriété du module de classe. Pour toutes les autres feuilles j'ai le menu propriété qui s'affiche mais pour le module de classe rien...

Sinon concernant les lignes, il existe une propriété qui s'appelle "AddLine" qui permet d'ajouter une ligne (oh oooohhhh !). Il faut donner les coordonnées de la manière suivante : "left", "width", "top", "height". Les coordonnées négative se note avec un " # " derrière la valeur.

ça avance tranquillement mais surement
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 131
Messages
6 717 958
Membres
1 586 383
Dernier membre
potofeu
Partager cette page
Haut