Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Mouse Wheel Hook (faire défiler le contenu d'une combobox/listbox avec la roulette)
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Et bien dans ce cas tu as un win64 mais un office32 bits...
moi j'ai modifié pour 64 bits le code, mais j'ai un bug, ça ne défile que vers le bas, pas vers le haut (le haut réagis comme si j'allais vers le bas aussi).
Bonjour.
Essayez en déclarant RtlMoveMemory comme ceci :
VB:
Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" _
(ByRef Destination As Any, ByRef Source As Any, ByVal Length As LongPtr)
Édition: Sachant qu'à l'utilisation si c'est une adresse dont on dispose en guise d'argument il faut préciser ByVal devant.
Ou bien comme cela :
VB:
Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" _
(ByVal Destination As LongPtr, ByVal Source As LongPtr, ByVal Length As LongPtr)
sachant qu'alors à l'utilisation il faut je suppose préciser ByRef devant un des paramètres si on ne dispose pas de son adresse.
Édition 2: D'une façon générale, pour ne pas avoir d'incompatibilité de type, une expression AddressOf quelquechose ou VarPtr(quelquechose) doit s'affecter à un LongPtr. C'est en quelque sorte un 'méta-type' de donnée automatiquement équivalent à Long en 32 bits et à LongLong en 64 bits.
Merci beaucoup BrunoM45pour tes fichiers. Je tournais en rond sur Internet avec des trucs complexes et non fonctionnels.
Y a-t-il un moyen de rentrer directement dans la ListBox pour ne pas avoir à sélectionner un Item pour que le Scroll soit opérationnel ?
J'ai essayé un .SetFocus, puis un .ListItem = 0 mais rien à faire. Il faut cliquer dans la ListBox pour déclencher le Scroll souris.
Y a-t-il un moyen de rentrer directement dans la ListBox pour ne pas avoir à sélectionner un Item pour que le Scroll soit opérationnel ?
J'ai essayé un .SetFocus, puis un .ListItem = 0 mais rien à faire. Il faut cliquer dans la ListBox pour déclencher le Scroll souris.
Sur ce sujet, JM27 a réussi en entrer directement en ComboBox en cette instruction insérant Me.ComboBox1.DropDown dans cette fonction:
VB:
Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' Définir les noms des objet à l'ouverture de l'USF
' sont utilisés dans le code du hook
Set ObjUSF = Me: Set ObjList = Me.ComboBox1
'Store the first TopIndex Value
intTopIndex = Me.ComboBox1.TopIndex
Me.ComboBox1.DropDown
'
Hook_Mouse
End Sub
Par contre, il n'y a ps l'équivalent pour le ListBox !
Les fichiers ont l'air super mais je n'arrive pas à les faire fonctionner... j'ai à chaque fois le message "incompatibilité de type"...
Pouvez-vous éclairer mon chemin de débutant sur quoi faire pour solutionner le problème ?
(Utilisant une version 64 bits, j'ai rajouté "PtrSafe" devant Function)
Bonsoir.
Dans les Declare sur version 64bits les arguments ByVal destinés à recevoir des expressions AddressOf ou VarPtr doivent être déclarés As LongPtr.
Et, à ma connaissance, pour CopyMemory, tous doivent l'être, y compris Length parce qu'on pourrait en théorie lui demander de déplacer une zone de mémoire dont la taille en octets dépasse la capacité d'adressage sur 32bits
Édition: Je m'aperçois que j'en avais d'ailleurs déjà parlé au poste #37.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD