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 :

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

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 :

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

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