XL 2019 Molette Scroll sur ListBox

gg13

XLDnaute Occasionnel
Bonjour,

Je commence un nouveau projet pour lequel je devrai utiliser des ListBox et ComboBox.
Ces listes seront longues et je voudrais utiliser le scroll de la molette plutôt que les ascenseurs.

Après renseignement sur le site j’ai voulu utiliser ce post :
Mouse Wheel Hook (faire défiler le contenu d'une combobox/listbox avec la roulette)

Je galère depuis 2 jours et malgré plusieurs essais je n’arrive pas à intégrer ces différentes macros, plusieurs messages d’erreurs ….
Je ne comprends pas tout.
Si vous pouvez m’aider un peu je vous remercie d’avance.

Je joins le fichier exemple avec les listBox .

GG13
 

Pièces jointes

  • NBA1.3.xlsm
    37.6 KB · Affichages: 10

Usine à gaz

XLDnaute Barbatruc
Dès l'ouverture :
1667299181599.png
 

Dudu2

XLDnaute Barbatruc
@Usine à gaz,
Et oui bien sûr. Il faut que je récupère l'erreur pour le signaler car il faut évidemment:
Menu Outils d'Excel -> Macro -> Sécurité -> Onglets Sources fiables -> Cocher "Faire confiance au projet Visual Basic".
C'est une condition pour utiliser le bidule en 64Bits. En 32Bits, j'ai testé, et le problème ne se pose pas.

@patricktoulon,
Non ce n'est pas une histoire de sélection. C'est dû aux temporisations que j'ai faites. Je vais vérifier sur mon LapTop 32 bits.
 

patricktoulon

XLDnaute Barbatruc
non je pense qu'il ne faut pas insister
visiblement les différences entre versions avec leur propre gestion MDI des fenêtres qui diffèrent de plus en plus de l'une à l'autre
sans parler de je ne sais quelle temporisation quelconque et autre astuce qui marchent aujourd'hui et ne fonctionneront plus demain
il faut trouver un moyen de s'en passer handle window et tout i cointi
sinon ça va devenir une usine à gaz le module scroll et il faudra constamment revenir dessus
j'ai trouvé un moyen de m'en passer je vous livre ce soir ma dernière version sans api window seule les api hook et avec l'approximation bottom de la combobox corrigé
patientez: là je pars à la campagne prendre un bol d'air frais je bosse pas aujourd'hui donc j'en profite
 

Dudu2

XLDnaute Barbatruc
@Usine à gaz,
Merci pour ta confirmation. Dans ce fichier j'ai ajouté le contrôle de l'accès au projet VBA avec le cas échéant (si pas autorisé) un affichage de la boite de dialogue.

Sur mon Windows 10 + Office 2016 32 bits petite CPU, tout fonctionne bien. Le 1er Scroll peut mettre un peu de temps à s'établir (0.5 à 2 secondes). La souris apparait en cercle et durant cette période le Scroll dans le Control n'est pas établi. Mais ce n'est pas un souci.
 

Pièces jointes

  • VBA Scroll Souris en ListBox et ComboBox.xlsm
    67.4 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
Pour ne pas solliciter la Sécurité des Macros, je vais fermer la fenêtre par l'API dans la prochaine version.
Le problème c'est que le nom de la fenêtre dépend du langage. Faudrait au moins traiter français "Microsoft Visual Basic pour Applications" et l'anglais "Microsoft Visual Basic for Applications" (?) ou ne rechercher que sur "Microsoft Visual Basic".
 

Usine à gaz

XLDnaute Barbatruc
@Usine à gaz,
Merci pour ta confirmation. Dans ce fichier j'ai ajouté le contrôle de l'accès au projet VBA avec le cas échéant (si pas autorisé) un affichage de la boite de dialogue.

Sur mon Windows 10 + Office 2016 32 bits petite CPU, tout fonctionne bien. Le 1er Scroll peut mettre un peu de temps à s'établir (0.5 à 2 secondes). La souris apparait en cercle et durant cette période le Scroll dans le Control n'est pas établi. Mais ce n'est pas un souci.
Re-Dudu2 :
Tout fonctionne également sur ce fichier :)
 

Dudu2

XLDnaute Barbatruc
@Usine à gaz et tous les accros qui continuent à suivre cette histoire de fous.

Oui, l'aspect Scroll est Ok maintenant 32 et 64 bits, sauf peut-être chez @patricktoulon, mais ça m'étonne parce que je n'utilise plus du tout les API pour déterminer les zones de Scroll et si y a bien un truc qu'on identifie avec certitude c'est la ListBox ActiveX. Mais bon... Faudrait une config Office 2013 pour vérifier.

La question est le contournement du bug Excel qui fait qu'en 64Bits, si la fenêtre VBA Project est ouverte ça va faire planter Excel à un moment donné + ou - long du Scroll d'un Control.

Ce que j'ai fait pour fermer la fenêtre du VBA Project:
A intervalles de 10 secondes minimum, pour ne pas en faire trop:
- Directement si <Accès approuvé au modèle d'objet du projet VBA> est coché,
- Indirectement sinon, et c'est encore une galère car j'ai tout essayé de l'API (DestroyWindow, PostMessage) y a toujours un truc qui va pas bien. Je suis passé par une méthode basique consistant à afficher la fenêtre et à la fermer, ce qui, au passage, permet d'indiquer à l'utilisateur que ça a été fermé. Mais j'aurais préféré une méthode directe.
 

Pièces jointes

  • VBA Scroll Souris en ListBox et ComboBox.xlsm
    70.3 KB · Affichages: 4

Usine à gaz

XLDnaute Barbatruc
@Usine à gaz et tous les accros qui continuent à suivre cette histoire de fous.

Oui, l'aspect Scroll est Ok maintenant 32 et 64 bits, sauf peut-être chez @patricktoulon, mais ça m'étonne parce que je n'utilise plus du tout les API pour déterminer les zones de Scroll et si y a bien un truc qu'on identifie avec certitude c'est la ListBox ActiveX. Mais bon... Faudrait une config Office 2013 pour vérifier.

La question est le contournement du bug Excel qui fait qu'en 64Bits, si la fenêtre VBA Project est ouverte ça va faire planter Excel à un moment donné + ou - long du Scroll d'un Control.

Ce que j'ai fait pour fermer la fenêtre du VBA Project:
A intervalles de 10 secondes minimum, pour ne pas en faire trop:
- Directement si <Accès approuvé au modèle d'objet du projet VBA> est coché,
- Indirectement sinon, et c'est encore une galère car j'ai tout essayé de l'API (DestroyWindow, PostMessage) y a toujours un truc qui va pas bien. Je suis passé par une méthode basique consistant à afficher la fenêtre et à la fermer, ce qui, au passage, permet d'indiquer à l'utilisateur que ça a été fermé. Mais j'aurais préféré une méthode directe.
Tout fonctionne bien... super :)
 

patricktoulon

XLDnaute Barbatruc
bonsoir bonsoir :D

Pour ne pas solliciter la Sécurité des Macros, je vais fermer la fenêtre par l'API dans la prochaine version.
Le problème c'est que le nom de la fenêtre dépend du langage. Faudrait au moins traiter français "Microsoft Visual Basic pour Applications" et l'anglais "Microsoft Visual Basic for Applications" (?) ou ne rechercher que sur "Microsoft Visual Basic".

je me demande ce que tu va chercher sincèrement
mais quel rapport cela peut il avoir????
entre le scroll et l’accès sécurisé aux modules ou quel que soit une supposée fenêtre VBA

et en plus tu dis ne plus te servir des apis ?:oops:
alors quel rapport t???

avec les api WIN je veux bien comprendre que la gestion MDI de fenêtre diffère un peu sur 365
et encore cela je n'en suis pas sur !!! ;mais sans api du vba c'est du vba et c'est le même pour tous

je pense que tu cherche tout azimut mais a un moment donné il faut se recentrer sur le vrai problème
 

Dudu2

XLDnaute Barbatruc
sur 2016 en 32 ca ne fonctionne pas non plus même bug
On doit pas avoir le même 2016 32Bits (mon Laptop) car 2016 64Bits c'est mon Desktop.
Et j'ai testé sur les 2 évidemment.

mais quel rapport cela peut il avoir????
entre le scroll et l’accès sécurisé aux modules ou quel que soit une supposée fenêtre VBA
Je pense que tu n'as pas suivi. Je vais pas te refaire l'histoire, relis les posts.

il faut se recentrer sur le vrai problème
J'ai un fichier qui me donne satisfaction. Et pas qu'à moi.
J'attends toujours le tien.
 

patricktoulon

XLDnaute Barbatruc
ben oui il te donne satisfaction j'en convient
mais chez moi sur 2013 et 2016 32 non donc là déjà walouh!!
et je n'ai pas besoins de relire quoi que ce soit
si ça fou en l'air quoi que ce soit dans le vba project et que tu est obligé de gérer je ne sais quelle erreur qui normalement n'a rien a voir avec ça c'est que c'est pas bon

où tu a vu toi qu'il fallait activer l’accès approuvé au projet blablabla
pour faire marcher une macro qui n'a rien a voir avec les VBcomponents
je ne sais pas si tu te rends compte mais c'est grave
tu coche ça
et par macro tu peux enlever ajouter des modules par vba et j'en passe et des meilleures
demain tu trouve une autre merdouille tu fais quoi ? tu débloque quoi?
a un moment donné je le redis il faut réfléchir dans le bons sens
1667331410935.png
 

Dudu2

XLDnaute Barbatruc
Ça marche pas chez toi ? Ouais peut-être ! Je ne crois qu'aux tests et j'en ferai sur 2013 à l'occasion.
Je sais ce que j'ai fait et pourquoi je l'ai fait.
Toi, tu baratines pour critiquer, c'est ce que tu fais de mieux, mais tu n'apportes strictement aucune solution.
Il est où ton fichier ?
 

Statistiques des forums

Discussions
314 664
Messages
2 111 682
Membres
111 259
dernier inscrit
Seb15