Comment activer la molette de la souris pour ListBox, ComboBox, Frame dans VBA
VBA ne prend pas en charge la molette de la souris pour ListBox, ComboBox, Frame et UserForm. MouseWheel pour VBA de SonVuDev résout avec seulement 1 fichier .bas et 2 lignes de code, fonctionne sur Excel, Access, Word, PowerPoint.
Cet article est actuellement disponible uniquement en vietnamien et en anglais. Version anglaise affichée.
Écrivez-vous une macro VBA dans Excel, Access, Word ou PowerPoint et voyez ListBox / ComboBox / Frame défiler avec les touches mais pas avec la molette de la souris ? Ce n'est pas un bug logiciel, c'est une limitation de VBA du passé. Le
MouseWheel de SonVuDev pour VBA résout ce problème avec seulement 1 fichier .bas et 2 lignes de code. Pas besoin de bibliothèque MSForms, fonctionne sur n'importe quel hôte VBA, prend en charge Office 64 bits et 32 bits.
Pourquoi VBA ne peut-il pas défiler avec la molette de la souris ?
VBA n'est pas .NET ou WinForms — c'est un ancien langage de programmation, profondément intégré à Office. Les contrôles tels que ListBox, ComboBox, Frame ne disposent pas de boucle de message disponible pour intercepter l'événement WM_MOUSEWHEEL. Lorsque vous faites défiler, Windows envoie ce message à la fenêtre parent (UserForm), mais VBA ne le transmet pas au contrôle enfant.
Conséquence : vous devez faire glisser la barre de défilement à la main ou utiliser les touches fléchées, ce qui est très gênant lorsque la liste est longue.
Comment activer la molette de la souris dans VBA
- Télécharger MouseWheel.bas de SonVuDev.
- Importer le fichier .ba s dans le projet VBA (Alt+F11 → Fichier → Importer un fichier).
- Dans l'événement
UserForm_Initialize, ajoutez 2 lignes :Call MouseWheelEnable(Me)Call MouseWheelConfigure(Me, 3, True) - Exécuter le formulaire — la molette de la souris fonctionne.
Fonctionnalités
- Aucune dépendance avec MSForms : Suite le type de rôle est détecté par la saisie en canard, aucune référence supplémentaire n'est nécessaire.
- Prend en charge tous les hôtes VBA : Excel, Access, Word, PowerPoint, VB6.
- Prend en charge 64 bits et 32 bits : VBA7 (Office 64 bits) et VBA6 (Office 32 bits) tous deux run.
- Vitesse de défilement réglable : Utilisez
MouseWheelConfigurepour définir nombre de lignes défilées par rouleau. - Auto-réparation : Si l'installation du crochet échoue, l'outil essaie à nouveau — pas d'état bloqué.
- Décrochage en toute sécurité : Lorsque vous quittez le contrôle ou fermez le formulaire, le crochet est retiré proprement.
- Facultatif diagnostics : Activez
EnableDebugouMWLogpour afficher les journaux d'activité. - Rapports sur les fonctionnalités de la plate-forme :
IsWheelSupportedetPlatformNameindiquent si le système actuel le prend en charge.
Quand devez-vous l'utiliser ?
- Le formulaire VBA ListBox/ComboBox contient-il des centaines de rows.
- Les utilisateurs finaux sont habitués à utiliser la molette de la souris, ils ne souhaitent pas utiliser les barres de défilement.
- Vous souhaitez améliorer l'UX d'outils internes sans réécriture vers .NET.
Conclusion
MouseWheel pour VBA est une solution compacte, sans dépendance et facile à intégrer. Si vous écrivez du VBA et souhaitez que votre formulaire puisse défiler avec la souris, c'est le bon outil.