[Résolu] - MouseIcon "Doigt" (type lien hypertext) sur Control d'un UserForm

zorglubxp

XLDnaute Junior
Bonjour à tous,

J'ai ici et là cherché comment faire apparaître l'icone de la souris en forme de doigt à l'instar de ce qu'il se passe au survol d'un lien hypertext.

j'ai à plusieurs reprises trouvé ce type de procédure avec en argument du MouseIcon un fichier *.cur

VB:
Private Sub tbxLnk_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   
    With tbxLnk
        .MousePointer = fmMousePointerCustom
        .MouseIcon = LoadPicture("C:\WINDOWS\Cursors\harrow.cur") 'idem avec ....\aero_link_l.cur
    End With
   
End Sub

Lorsque j’exécute ce code, au survol du textbox désiré (tbxLnk), j'ai une erreur car Excel (ou windows) ne semble pas être en mesure d'exploiter les fichiers en .cur
J'ai aussi un message d'erreur lorsque j'essaye de renseigner le champ MouseIcon de la fenêtre proprété de mon Control. Il n'accepte pas les fichiers *.cur

Pourtant, sur les forums, les utilisateurs semblent satisfaits de cette procédure mais comme les fils datent un peu, c'était peut être valable sur d'anciennes version de windows (je suis sous 8 et mon fichier est destiné à être utilisé sous 7) ou de MS Office.

Zorg
 

zorglubxp

XLDnaute Junior
Bonjour.
Ce n'est pas tout à fait le curseur demandé, mais il marche.
Il vaut mieux le définir dans les propriétés que dans le code, comme ça il reste.
Merci Dranreb

Maintenant, j'ai une belle collection de main, mais lorsque j'ai précisé que mon fichié été destiné à tourner sous win7 alors que je suis sous win 8, j'ai omis un petit détail qui a son importance, c'est que sous win7, il y aura potentiellement 70 PC.

ça fait bcp à mettre à jour :p
 

zorglubxp

XLDnaute Junior
Ayé, je crois avoir compris,
je copie le .cur qui fonctionne dans le repertoire Cursors de mon PC,
Je fixe l'icone dans la fenetre de propriété de ma TextBox, et lorsque je transporte mon fichier excel, ce petit fichier va suivre ???

Si c'est ça, c'est magique, mais je n'y aurai pas cru un instant !
 

zorglubxp

XLDnaute Junior
Ouf
Le site était indisponible, j'ai cru que c'était de ma faute !
Sinon, EUREKA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Merci à Tous, ça fonctionne en affectant le lien aux propriétés l'icone suit si on déplace le fichier.
Je suis bluffé, ils sont fort chez Crosoft.

Voilà un point de résolu !

Merci encore
 

eb93

XLDnaute Nouveau
Hello à tous,
J'ai lu un peu les posts précédents, et je sui finalement tombé sur un forum où il était expliqué comment utiliser les curseurs windows, tels qu'ils apparaissent dans windows.

VB:
Option Explicit
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Private Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long
Private Declare Function GetCursor Lib "user32" () As Long
Private Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As Long
Private Const OCR_NORMAL As Long = 32512
Private curseurpresent As Long
Private iconcurseurpresent As Long
 
Private Sub Command1_Click()
  '===================je récupère d'abord (pour pouvoir au besoin le restituer) le curseur en cours
  curseurpresent = GetCursor()
  iconcurseurpresent = CopyIcon(curseurpresent)
  '=================================================================
  Dim myDir As String
  Dim lDir As Long
  myDir = Space(255)
  lDir = GetWindowsDirectory(myDir, 255)
  myDir = Left$(myDir, lDir) & "\cursors\"
  CommonDialog1.InitDir = myDir
  CommonDialog1.ShowOpen
  definitcurseur CommonDialog1.filename
End Sub
 
Private Sub Form_Activate()
  Command1.Caption = "choisir un curseur"
End Sub
 
Sub definitcurseur(lefic)
  Dim lecurseur As Long
  lecurseur = LoadCursorFromFile(lefic)
  Call SetSystemCursor(lecurseur, OCR_NORMAL)
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
  '========= je restitue le curseur tel qu'il était
  Call SetSystemCursor(iconcurseurpresent, OCR_NORMAL)
End Sub

C'est du code VB, mais facilement transposable sur du VBA moyennant 2/3 modifications