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

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: 11

patricktoulon

XLDnaute Barbatruc
au final celle qui fonctionne le mieux sur ton fichier 11 c'est celle là
VB:
Public Sub releasePanes()
    Dim X&, Y, FrZ
    ' Application.ScreenUpdating = False
    LockWindowUpdate ActiveWindow.hwnd             'methode 2
    'If TypeName(ControlHooked) = "ComboBox" Then Exit Sub
    With ActiveWindow
        X = .SplitRow
        Y = .SplitColumn
        FrZ = .FreezePanes
        .FreezePanes = False
        If X > 0 Or Y > 0 Then
            .SplitRow = X
            .SplitColumn = Y
            .FreezePanes = FrZ
        End If
    End With
    LockWindowUpdate 0
    'Application.ScreenUpdating = True
End Sub
 

patricktoulon

XLDnaute Barbatruc
et enfin chez moi je la lance uniquement a l'activate de la feuille
les controls liste restent dispo au move sans être actif
je n'est pas testé sur le tiens mais ça doit être pareil

voila nos deux fichier fonctionnent avec les figés
merci qui ?
 

Dudu2

XLDnaute Barbatruc
Pour info mon dernier fichier est dans la ressource, j'ai procédé à quelques simplifications mineures qui ne sont pas dans le code de ce fichier, mais ça ne change pas grand chose.

voila nos deux fichier fonctionnent avec les figés
Désolé mais ton fichier ne fonctionne pas avec les figés.

Le problème est qu'il faut faire quelque chose pour débloquer.
Dans le Post #398, sur activation des feuilles je fais une modif de Zoom et tout de suite, TOUTES les ListBoxes sont débloquées.

Dans ton fichier tu fais un releasePanes() lors du UnHook qui ne s'applique que si il y a eu un Control Hooké.
Donc quand j'ouvre le fichier et que je vais directement sur une ListBox Panes #2 à #4, ben rien ne se passe parce que rien n'a été débloqué.

Ce problème n'a pas de solution en partant des évènements MouseMouve() puisqu'ils ne sont pas déclenchés. Il faut donc faire un déblocage à l'activation des feuilles qui n'est pas dans la "philosophie" du truc qui s'applique à ne gérer que les évènements MouseMouve().

De plus cette histoire d'erreur de l'espace montre qu'il y a quelque chose de plus profond dans le dysfonctionnement des ces ListBoxes. Mais si tu as une idée, essaie et vois si ça évite l'erreur.
 

patricktoulon

XLDnaute Barbatruc
re
je te l'ai dis le faire a l'activate de la feuille la première fois
j'ai essayé sur le tien(rien que dans le activate de la feuille)
mais non il y a des ratés il le faut donc quand même au unhookmouse c'est dommage
ça aurait été parfait


démo du mien rien que dans le activate
 

Dudu2

XLDnaute Barbatruc
<<Chez toi y a des ratés, y a des pâtés, y a des soufflés et des croutés.
Le mien, le mien, le mien, le mien, le mien, le mien, le mien, le mien, le mien, le mien, le mien...
>>

Euh non, chez moi ça roule Enfin ça Scroll

 

Dudu2

XLDnaute Barbatruc
tu l'a mis ou la releasepane
Mais pourquoi veux-tu absolument qu'il y ait un releaspane. Je t'ai dit, c'est le fichier du Post #398 dans lequel, sur activation des feuilles, je fais une modif de Zoom et tout de suite, TOUTES les ListBoxes sont débloquées. Voir le code du Module Workbook.

Bon après ça se plante en 50290 ! Mais bon, on le sait et on n'a pas de solution.
 

patricktoulon

XLDnaute Barbatruc
et pour info chez moi c'est le tiens qui a des y a des ratés, y a des pâtés, y a des soufflés et des croutés.

et apres control 1 erreur gérée par le callnexthook sur plus de 10000coups de roulette
autant dire rien du tout
et encore j'ai arrêté a 10000 1 coup sur 100000 sur 1000tour seconde c'est du pipi de chat
EDIT/
Tu n'as tellement pas lu mes messages que tu ne sais pas que depuis le Post #390, où j'ai cerné le problème, un Scroll dans le Pane ou une modif de Zoom (plus simple) permet de "débloquer" ces ListBoxes.
je te jure devant dieux que je veux pas t'ennuyer mais ton #398 bloque chez moi après la premier liste scrollée je voudrais que tu sois là pour le voir
j'ai meme essayé d'aller sur la feuille 2 et revenir pour voir
donc ton fichier modèle 12 alias post 398
 

Dudu2

XLDnaute Barbatruc
Pas chez moi...


De toutes façons on s'en fout parce que on ne peut pas implémenter ça à cause:
- d'une action nécessaire au niveau Worksheet,
- d'une erreur irrécupérable à la sortie.
 

patricktoulon

XLDnaute Barbatruc
re
si ça peut aider
il s’avère que quand on ouvre le classeur("398")
si on touche rien que l'on va direct a une liste sans click(sans activation) et que l'on scroll
et qu'ensuite on a le malheur a la sortie de toucher une cellule(sectionner) ben c'est fini c'est bloqué et toute pas que l'une d'entre elle

pour ton erreur un simple on error résume next puisque ça se produit uniquement à la fermeture

il est fort possible que cette erreur est due au fait que ta fonction rectangle est appelée par la lowlevelmouseproc qui tourne extérieurement a vba (en mémoire)
du fait que ce soit pas les même address
et donc les donnée dans le tampon de l'adressof ne sont pas detruites
comme je disais quelques pages precedente les erreurs que tu a sont difficilement identifiable et je mettrais ma main (à tords ou à raison)au feu que c'est ça
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
pour ton erreur un simple on error résume next puisque ça se produit uniquement à la fermeture
Oui ça je l'ai fait mais ça n'est valable que pour un code donné et figé.

Si on modifie le code en ajoutant des traces par exemple ou un code qu'un utilisateur ajoutera sur le traitement de la ListBox ça va se planter ailleurs ! Donc c'est irrécupérable.
De plus même avec un On Error Resume Next, on sent bien qu'il y a un truc qui va pas car ça n'a AUCUNE RAISON de se planter en 50290 dans une fonction qui n'est pas en cours d"exécution. C'est un truc qui vient de profond et c'est très malsain.
 

Dudu2

XLDnaute Barbatruc
et pour info chez moi c'est le tiens qui a des y a des ratés, y a des pâtés, y a des soufflés et des croutés.
Je te crois, évidemment si tu le dis. Donc encore une différence à gérer.
Perso, je laisse tomber ce truc. Pas de Scroll en ListBoxes sur Panes #2 à #4 .
Dommage mais on peut pas toujours récupérer les Bugs Excel.
 

Dudu2

XLDnaute Barbatruc
Même si tout ça ne sert à rien je te remets le fichier du 398 avec non plus la modif du Zoom mais la suppression / re-création des Panes dans l'activation de la feuille. Chez moi ça fonctionne mais sans doute chez toi, que la première fois ?
 

Pièces jointes

  • VBA Scroll Souris en ListBox et ComboBox - Test Panes.xlsm
    99.2 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
donc fichier 13 ok je teste
et bien non ça ne fonctionne pas

maintenant ton fichier 11 c'est le tien je n'ai rien toucher aprt lancer dans le unhookmouse la releasepane et a l'activate de la feuille
j'ai ajouté cela dans le module de la feuille


maintenant dans le unhookmouse


et enfin ma fonction

j'ai bien sur ajouter la déclaration de l'api
VB:
Private Declare PtrSafe Function LockWindowUpdate Lib "user32" (ByVal hWndLock As LongPtr) As LongPtr

et bien résultat


et c'est ton fichier avec ta méthode
 

Pièces jointes

  • VBA Scroll Souris en ListBox et ComboBox(11).xlsm
    79.7 KB · Affichages: 3
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…