molette souris dans ListBox de Userform+ShowModal False

J

Jean-Phi

Guest
Ciao le forum !

En cherchant sur le forum, j'ai trouvé un post tout à fait intéressant qui permet d'utiliser la molette de la souris dans la listbox d'un userform (MoletteSouris.zip). Chapeau bas d'ailleurs pour l'appli !

L'appli marche très bien... tant que la propriétéShowModal est vraie -True-.
Dans mon cas particulier, je souhaite avoir la propriété ShowModal fausse -False- et là soucis : quand le userform est affiché, si je veux le déplacer -ou la fermer avec la croix en haut à droite du userform - , le code tourne en rond et je n'ai plus la main.... (je travaille sous Windows 2000 et Office 2000). Le résultat est le même avec l'appli originale : MoletteSouris.zip

J'ai regardé le code et j'avoue avoir quelques difficultés à tout comprendre alors mes tentatives pour régler ce problème n'ont pas eu grand succès.

Si quelqu'un a une idée, je suis preneur. Merci d'avance !

Cordialement,
Jean-Phi
 
@

@+Thierry

Guest
Bonjour Jean-Phi, le Forum

Tu devrais sûrement avoir l'Auteur sur ce Fil de Discussion dans pas longtemps.... Monsieur "Magic Ti" pour ne pas le nommer !

Tu n'es pas le premier, ni le dernier, à te casser les dents sur ce fichier que nous connaissons tous et toutes ici. C'est, comme à l'habitude avec Ti, une prouesse technique.

Cependant, en laissant bien entendu le soin à Ti de compléter l'info, je ne conseille pas trop de s'aventurer avec une adaptation perso de cette appli, je me souviens de LaurentTBT qui y perdait son latin... enfin son VBA !

mais je pense que tu auras d'autres réactions...

bon aprèm
@+Thierry
 
L

LaurentTBT

Guest
Bonjour à tous,

Non, non, Thierry, je n'y ai pas perdu mon latin, et j'ai même réussi à contourner le problème. Cependant, c'est du style usine à gaz!

Bon, j'écris ceci vite fait depuis le boulot, donc rendez-vous ce soir pour essayer d'expliquer mon astuce, qui n'est cependant pas la panacée, mais permet tout de même d'avancer un tout petit peu.

à toute...

Laurent.
 
J

Jean-Phi

Guest
Rebonjour à tous !

Merci pour vos réponses !
C'est vrai que la molette a déjà fait déposer de nombreux posts sur le forum et abouti à une jolie prouesse technique ! ;-)

Je viens d'avoir une idée : ce serait de récupérer la position de la souris sur l'écran et de changer le 'StatusBar' du userform si elle se trouve en dehors du cadre...
Cela me semble assez usine à gaz aussi ... En attendant de trouver mieux

Bon aprèm' à tous !

Cordialement
J-Phi
 
T

Ti

Guest
personnellement, je viens de tester le fichier démo et une application réelle (Gestion de cave, sur Vériti) utilisant cette technique (avec Win XP Excel 2003), et tout cela fonctionne très bien même en showmodal = false, donc je suppose que tu utilises Excel 2000, qui est un peu pointilleux sur ce sujet.
Mais là, je ne pourrai pas t'aider dans l'immédiat, je n'ai pas accès à XL 2000 ici.
 
L

LaurentTBT

Guest
Bonsoir à tous,

Comme promis, voici mon usine à gaz.
J'ai mis 4 cas différents pour expliquer les difficultés, et le plantage possible lorsqu'on est en usf modal.
J'ai repris ce que moi j'utilise, à savoir une scrollbar, et non une listbox, mais c'est facilement adaptable, et en reprenant la démo initiale de Ti, on peut même utiliser ses astuces pour que ça fonctionne avec plusieurs contrôles.

Sinon, pour expliquer le bogue, tel que je l'ai compris, la procédure de Ti intercepte les messages envoyés lors d'actions, ici sur la souris.
Or, dans le cas d'un Usf NON Modal, en cas de clic sur son cadre, il n'y a aucun message généré apparemment, et Excel se bloque, alors que si l'Usf est Modal, aucun problème, il y a bien un message de généré, et la procédure de Ti fonctionne bien.

Mon usine à gaz (4ème cas) consiste donc à supprimer le cadre, et à le recréer artificiellement par des images et des labels.
Le 3ème cas était une tentative précédente, mais qui ne me suffisait pas.

Maintenant, je ne comprends pas trop ce que veut faire Jean-Phi à partir de la position de la souris. Si c'est plus efficace, je suis bien sûr preneur.

J'attends vos commentaires et astuces pour faire mieux, mais je pense que pour le moment, tant que Microsoft ne prendra pas en compte directement les événements MouseWheel, on en restera à ces usines à gaz pas complètement satisfaisantes! D'ailleurs, malgré des recherches et questions sur MPFE, y compris site US, aucune réponse ne m'a été apportée.

En tout cas, pour le moment, j'arrive quand même à quelques chose d'à peu près utilisable…

Bonne soirée.
 

Pièces jointes

  • Mouswheel4.zip
    40.9 KB · Affichages: 206
L

LaurentTBT

Guest
Oups, j'ai oublié de mettre les images dans le Zip!
Il faut enregistrer ces images dans le même répertoire que le fichier Excel, sinon, plantage!

Sorry…
 

Pièces jointes

  • ImagesMoletteSouris.zip
    11.7 KB · Affichages: 147
T

Ti

Guest
effectivement, à peine chargé le fichier (j'ai fait confiance...) Excel a planté.

Je suis en train de transformer cette procédure en module de classe, en essayant de gérer une fermeture sur erreur, pour éviter le plantage, mais ça n'est pas gagné.
J'ai trouvé quelque part une DLL qui est censée gérer la molette, mais elle ne semblait pas fonctionner correctement.

Ceci dit, je confirme que dans Excel 2003 ma procédure marche très bien, modal ou non.
 
L

LaurentTBT

Guest
Désolé, Ti…
Moi, c'est Excel XP 2001, et ça plante temporairement excel dans le cas du Usf Modal.
Mais comme je l'ai mis, une fois excel bloqué, je lance n'importe quelle autre application, puis je reviens sous excel, et j'ai à nouveau la possibilité de cliquer sur le bouton "Quitter".
Bizarre, n'est-ce pas…
 
J

Jean-Phi

Guest
Bonjour Ti, Laurent, le forum !

Merci à tous pour les réponses et la solution proposée, je vais tester ton appli tout de suite Laurent.

Pour mon idée, j'avais trouvé une appli qui minimisait la taille du userform si la souris n'était pas dans le cadre du userform, tu dois certainement la connaitre.
A y regarder de plus près, je pensais utiliser ce repérage de la souris pour lancer une procédure de changement du statusbar du userform (showmodal = False) si la souris est hors cadre (et Showmodal=True quand la souris est dedans).
Techniquement, cela ne me semble pas inenvisageable... N'étant pas expert, ceci n'engage que moi évidemment.

Je n'aurai pas le temps tout de suite de regarder ça de plus près mais si ça t'intéresse, je t'ai mis l'appli en pièce jointe.

Bonne journée et encore merci !!

@+
J-Phi
 

Pièces jointes

  • RollUpForm.zip
    21.1 KB · Affichages: 144
L

LaurentTBT

Guest
Bonjour à tous,

Merci, Jean-Phi, je ne connaissais pas cette appli. C'est un peu déstabilisant au début, quand on réaffiche le userform, la souris bouge automatiquement pour revenir de l'endroit où il était minimisé vers le centre écran!
Ceci dit, je ne pense pas que cela te serve, car lorsque tu cliqueras sur la croix de fermeture (ou n'importe où dans le cadre), tu auras toujours le bloquage d'excel (sous XP2002 ou 2000, puisque Ti n'a pas le problème sous 2003)
Ceci dit, je vais garder ta démo sous le coude, elle pourrait toujours servir un jour!

à plus…
 
T

Ti

Guest
euh, je modère ce que j'ai dit au-dessus, ça plante sous 2003 aussi (ou plutôt, on perd le focus et il faut désactiver puis réactiver l'application pour retrouver le controle). Ceci dit, je ne vous conseille pas trop ces usines à gaz trop lourdes... Ca va bien dans une démo, mais ça me semble trop facteur de problèmes aléatoires.

Après avoir remis le nez dans ma "vieille" démo, j'ai développé une méthode pour contourner le problème. J'essaie encore une deuxième méthode et je vous tiens au courant.
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 823
Membres
103 971
dernier inscrit
abdazee