Dessin userformCompile error : Sub or function not defined
s
Bonjour,
J'ai farfouille un peu sur le net et j'ai trouvé ce code pour dessiner dans un userform.
Dans l'userform on inscrit
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long, lpPoint As Any) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Byte
Private monhdc As Long
Dim Buff As Boolean
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Buff = True
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Do While monhdc = 0
monhdc = GetForegroundWindow()
monhdc = GetDC(monhdc)
Loop
If Button <> 1 Then Exit Sub
hRPen = CreatePen(PS_SOLID, 10, RGB(0, 255, 0))
DeleteObject SelectObject(monhdc, hRPen)
If Buff Then
MoveToEx monhdc, X * 1.32, Y * 1.32, &H0
Buff = False
End If
LineTo monhdc, X * 1.32, Y * 1.32
DoEvents
End Subet sur la feuille 1 :
Private monhdc As Long
Private Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
Private Declare Function ArcTo Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim B As Long
'activer un UC et dessiner dessus (trouver sont HDC)
UserForm1.Show
'Trouver le HDC d'une feuille Excel
monhdc = 0
Do While monhdc = 0
monhdc = GetForegroundWindow()
B = monhdc
monhdc = GetDC(monhdc)
Loop
'Dessiner directement sur une feuille Excel
B = Arc(monhdc, 120, 500, 320, 400, 320, 400, 780, 500)
End SubMais voilà à chaque fois que je clique dans ma feuille j'obtiens le messaged'erreur suivant Compile error : Sub or function not defined.
J'arrive à dessiner dans luserform mais rien ne s'affiche sur la feuille. Etant donné que je suis débutant dans VBA je me demande ce qui cloche. ??????????????
Je travaille sous excel 2007.
Merci par avance pour l'aide.
Bonjour
Comme je ne sais pas quel résultat on doit avoir, je me suis juste occupé des messages d'erreurs
s
C'est parfait merci pour tout cela fonctionne , je vais regarder également ou se trouvaitl'erreur.
Merci