Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mouse Wheel Hook (faire défiler le contenu d'une combobox/listbox avec la roulette)

  • Initiateur de la discussion Initiateur de la discussion Compte Supprimé 979
  • Date de début Date de début

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 !

Re : Mouse Wheel Hook (faire défiler le contenu d'une combobox/listbox avec la roulet

Bizarre car cela ne fonctionne pas chez moi...
Avez vous effectué des modifications ?
 
Re : Mouse Wheel Hook (faire défiler le contenu d'une combobox/listbox avec la roulet

Non je pas fait aucune modification, mais je vous confirme que ça fonctionne parfaitement.
 
Re : Mouse Wheel Hook (faire défiler le contenu d'une combobox/listbox avec la roulet

Non je pas fait aucune modification, mais je vous confirme que ça fonctionne parfaitement.

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).
 
Re : Mouse Wheel Hook (faire défiler le contenu d'une combobox/listbox avec la roulet

Exactement pareil !
 
bonjour,
Sous excel 2013 64 bits ca marche pas.

et :
 

Pièces jointes

  • scroll sur excele 2013 64 bits.jpg
    572.5 KB · Affichages: 44
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.
 
Dernière édition:
Bonjour, merci Dranreb
Je suis sous Windows 8.1 64 bits et excel 2013 64 bits.
Je vais réessayer.
Cordialement
 
Merci beaucoup BrunoM45 pour 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.
 
Dernière édition:
Salut Dudu2

Il ne faut malheureusement surtout pas, car dans mes souvenirs, ça faisait planter Excel 🙁
 
Comment tu faisais ? Tu t'en souviens ? Un placement de curseur sur la ListBox et simulation d'un Clic 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 !
 
Bonjour Bruno,

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)
 

Pièces jointes

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.
 
Dernière édition:
Bonjour Lorenzini,
Salut Dranreb 😉

J'ai modifié la version 64bits en v2b pour prendre en compte le LongPtr et une ou 2 petites modifs.

La mise à disposition des fichiers date et je n'avais pas de version 64bits à l'époque

@+
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…