Bonjour à tous,
Je viens juste de m'inscrire sur ce forum (bien que je l'utilise depuis longtemps pour m'aider dans mes petits développements) car j'ai un gros soucis et je ne trouve pas de solution pour le résoudre.
Je vais essayer d’être clair :
Je trace un graphe quelconque sur une page et je souhaiterai récupérer les coordonnées de la souris quand je clique dessus. Pas de soucis pour cela, j'ai créé une classe de module avec un événement comme le montre le petit bout de code suivant :
Dans un module, je créé un nouvel objet de cette classe auquel j'attribue mon graphe (via activeChart) et effectivement lorsque je relâche la souris je récupère des coordonnées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public WithEvents cht As Excel.Chart Private Sub cht_MouseUp(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long) 'MsgBox "X: " & x & ", Y: " & y end Sub
Pour vérifier ces coordonnées, je décide de tracer une ligne sur ce graphe avec addline pour vérifier que celle-ci débute bien au bout de ma souris. J'ai donc modifié ma classe comme voici :
Et la problème, j'ai bien une ligne qui se trace sur mon graphe mais pas au bout de mon pointeur, la ligne se trouve à côté. Il ne s'agit pas d'un offset car l'écart entre la ligne et ma souris varie en fonction de ma position (très faible écart si proche du coin en haut a gauche de mon graphe et de plus en plus grand lorsque je m'en éloigne). J'ai bien trouvé un coefficient a appliquer à x et y pour que cela fonctionne (bidouillage !!) mais le problème c'est que cela fonctionne seulement avec un zoom fixe, si zoom avant ou zoom arrière, cela ne fonctionne plus ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Public WithEvents cht As Excel.Chart Private Sub cht_MouseUp(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long) 'MsgBox "X: " & x & ", Y: " & y With cht With .Shapes.AddLine(x, y, x + 50, y + 50) End With End With end Sub
Avez vous déjà rencontré ce type de problème ? Savez vous d’où peut provenir cet écart ?
Merci par avance ... rien que pour la lecture de mon problème.
Arnaud
Partager