Bonjour,
Dans le cadre de mon stage, je suis amené à coder en VBA, langage que je ne connaissais pas du tout et que je trouve à présent génial! Cependant, je rencontre une grosse difficulté :
Je souhaite récupérer les coordonnées de deux points choisis par l'utilisateur, pour cela j'utilise la fonction GetCursorPos puis je fais appel à la fonction ActiveSheet.Shapes.AddLine pour tracer une ligne entre ces deux points mais au final j'obtiens une ligne qui n'est pas du tout au bon endroit, de même lorsque je souhaite tracer un cercle en prenant comme centre un point choisi par l'utilisateur avec la fonction ActiveSheet.Shapes.AddShape.
J'ai essayé de changer l'origine du repère et de convertir les coordonnées obtenues par GetCursorPos en Pixels (et en Twisps car je ne sais pas en quelle échelle sont les résultats de la fonction GetCursorPos) mais je n'ai eu aucun bons résultats . Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
Option Explicit
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Global pt1 As POINTAPI
Global pt2 As POINTAPI
 
Sub Add_pipe()
MsgBox "Placez votre curseur à l'endroit du 1er point de votre canalisation et appuyez sur entrée"
 
' L'utilisateur choisit le 1er point pour tracer la canalisation
 
GetCursorPos pt1
 
 
MsgBox "Placez votre curseur à l'endroit du 2eme point de votre canalisation et appuyez sur entrée"
 
 
' L'utilisateur choisit le 2eme point de la canalisation qui sera relié au 1er point pour tracer la canalisation
GetCursorPos pt2
 
ActiveSheet.Shapes.AddLine(pt1.X, pt1.Y, pt2.X, pt2.Y).Select
 
End Sub
Vous remarquerez surement que la façon dont je demande à l'utilisateur de choisir ces points est un petit peu étrange, en effet je n'ai pas trouvé comment obtenir les coordonnées d'un point en cliquant dessus, si vous avez également une solution pour ce problème je suis également preneur

Merci pour votre aide