Icône de la ressource

utilisation de la molette souris pour scroller les controls scrollable dans feuille et userform 7.1

patricktoulon

XLDnaute Barbatruc
patricktoulon a soumis une nouvelle ressource:

utilisation de la molette souris pour scroller les controls scrollable dans feuille et userform - scroll control avec la molette de la souris

ce fichier contient le module de hooking pour la souris
pour pouvoir scroller avec la molette de la souris
cette version est entièrement autonome
le hooking s'arrête tout seul
les combobox deviennent auto repliable

fonctionne sur Listbox , ComboBox , Frame
dans une feuille ou un userform

En savoir plus sur cette ressource...
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr Patrick :)
1667462612908.png

:)
 

patricktoulon

XLDnaute Barbatruc
Bonjour lionel
comme d'hab tu a 3 wagons de retard
dans la dernière version je n'utilise plus d'api pour les rectangles
donc là tu teste une version qui n'est pas la dernière que j'ai donné
 

patricktoulon

XLDnaute Barbatruc
@Usine à gaz oui tu a lu la dernière phrase ? ;)
pour info je vous montre tout
ma version avec VBE ouvert on voit la fonction dans son entièreté
a aucun moment la moindre erreur s'inscrit dans le debug
et le recall est automatique
et le CallNextHookEx doit être dans la gestion d'erreur et pas automatique!!!!

demo.gif
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD

patricktoulon

XLDnaute Barbatruc
patricktoulon a mis à jour utilisation de la molette souris pour scroller les controls scrollable dans feuille et userform avec une nouvelle entrée de mise à jour:

fonctionne en full api 32 /64 bits

Bonjour a tous
perso je préfère prendre des chemins simples

ce modèle en full api ne necessite plus le calcul de pane et autre panes(x).pointstopixels
seule les api windowfrompoint et getwindowrect demare le hook si un handle aivalable est retourné
j'ai ajouté la gestion des feuille figé qui bloque le scroll dans les panes >1

il n'y a plus qu'a glisser le module dans votre projet
et mettre ceci dans l'event mouse du control (Listbox , Frame , Combobox )
VB:
hookmouseX...

Lire le reste de cette entrée de mise à jour...
 

patricktoulon

XLDnaute Barbatruc
Bonsoir
le message d'erreur c'est quoi?
vous travaillez avec quelle version de windows et excel ?

si vous n'en dites pas un peu plus , je risque pas de faire quoi que ce soit
il faut faire un peu plus d'effort dans vos interventions sinon s'abstenir
et pour info ce fichier à été testé sur 32 et 64 bits
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr Patrick, le Fil, le Forum :)
Je viens de reprendre ton fichier dans les ressources.
Dès l'ouverture voilà le beug (même erreur que #post4):
1669185045971.png

Obligé de quitter Excel "sauvagement" avec le gestionnaire de tâches.
@+
:)
 
Dernière édition:

alex973

XLDnaute Nouveau
Bonsoir
le message d'erreur c'est quoi?
vous travaillez avec quelle version de windows et excel ?

si vous n'en dites pas un peu plus , je risque pas de faire quoi que ce soit
il faut faire un peu plus d'effort dans vos interventions sinon s'abstenir
et pour info ce fichier à été testé sur 32 et 64 bits
Bonjour Patrick
message erreur : incompatibilité de type
Windows : 11 version 22H2
Office : 365 apps for entreprise

pardon pour cet oubli
alexis
 

patricktoulon

XLDnaute Barbatruc
re
bizarre que ce soit cette erreur 🤔o_O
dans le doute
VB:
Function GetControlHandleByWindowFromPoint(ctl) As LongPtr
    Dim Hold As POINTAPI, clss$
    'Position curseur
    
    GetCursorPos Hold
    #If Win64 Then
       Dim hWnd As LongPtr, hWndp As LongPtr
        hWnd = WindowFromPoint(PointToLongLong(Hold))
    #Else
       Dim hWnd&, hWndp&
        hWnd = WindowFromPoint(Hold.X, Hold.Y)
    #End If
    Select Case True
    Case TypeOf ctl Is MSForms.ListBox Or TypeOf ctl Is Frame
        GetControlHandleByWindowFromPoint = hWnd
    Case TypeName(ctl) = "ComboBox"
        clss = Space$(255)
        hWndp = GetParent(hWnd)
        GetClassName hWndp, clss, 255
        If InStr(1, clss, "F3 MdcPopup") = 0 Then hWnd = 0    ' si c'est un popu alors
    Case Else: hWnd = 0
    End Select
    GetControlHandleByWindowFromPoint = hWnd
End Function
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
re
bizarre que ce soit cette erreur 🤔o_O
dans le doute
VB:
Function GetControlHandleByWindowFromPoint(ctl) As LongPtr
    Dim Hold As POINTAPI, clss$
    'Position curseur
   
    GetCursorPos Hold
    #If Win64 Then
       Dim hWnd As LongPtr, hWndp As LongPtr
        hWnd = WindowFromPoint(PointToLongLong(Hold))
    #Else
       Dim hWnd&, hWndp&
        hWnd = WindowFromPoint(Hold.X, Hold.Y)
    #End If
    Select Case True
    Case TypeOf ctl Is MSForms.ListBox Or TypeOf ctl Is Frame
        GetControlHandleByWindowFromPoint = hWnd
    Case TypeName(ctl) = "ComboBox"
        clss = Space$(255)
        hWndp = GetParent(hWnd)
        GetClassName hWndp, clss, 255
        If InStr(1, clss, "F3 MdcPopup") = 0 Then hWnd = 0    ' si c'est un popu alors
    Case Else: hWnd = 0
    End Select
    GetControlHandleByWindowFromPoint = hWnd
End Function
Merci Patrick pour le code :)
Mais impossible à tester car le fichier ne me laisse pas la possibilité de tester...
Dès l'ouverture le beug surgit lol
et Obligé de quitter Excel "sauvagement" avec le gestionnaire de tâches.
:)
 

Statistiques des forums

Discussions
312 193
Messages
2 086 062
Membres
103 110
dernier inscrit
Privé