Autres toutes versions tester le scrool avec la roulette sans passer par un hooking en addressof

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 !

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
la principal raison des crash excel quand on utilise le hooking de la souris pour avoir le mouse wheel(la roulette)
c'est que le looping avec le (CallnextHook)est asynchrone avec le captage du message de la souris
donc quand une erreur se produit(on va trop vite ou autre)
le looping lui continue parfois au moins une fois même en erreur
résultat comme on déplace le block type du message en mémoire ça crash

je vous propose de tester ceci
ici on va rester dans un do/loop vba classique et le message de la souris sera récupéré par un peekmessage
si il y a une erreur (du au message de la souris non conforme) normalement on a une erreur vba classique
et donc le do/loop est interrompu
donc pas de relance avec un message de la souris erroné donc pas de crash
Vous constaterez que j'augmente l'allocation de la mémoire aussi (64 bits double (longlong ou longPtr))(+2&)

d'autant plus que la dans cette démo je met tout dans le userform
ce qui n'est pas possible avec un code de hooking bien entendu
et ça peut avoir un avantage lorsque l'on veut distribuer un interface(userform) sans devoir l'accompagner de x modules

toujours pareil pour déterminer le rectangle je me sert de ma fonction perso du calendar que j'ai modifié pour ce besoins
donc testez et si ça fonctionne je ferais une ressource au propre

merci d'avance pour votre participation

j'en connais un qui vas ouvrir grand les yeux 🤣

Patrick
 

Pièces jointes

Solution
Bonjour @jurassic pork , @Dudu2 , @Nathe
j'ai mis le controlrelease en optionnel dans la démo (fonctionne aussi dans userform)
j'en ai profité pour mettre un multipage
et dans la page 1 du multipage j'ai mi un label violet
et c'est lui qui pilote le scroll de la page
comme ca on peut mettre un fond sur chaque page vu que ce control n'a pas de propertie backcolor
bien évidemment j'ai ajouté le textbox
dans cette démo donc on a le controlrelease optionnel
et le scroll piloté par un autre control
voila comme ça on est au même niveau que la V 3.0 avec iaccessible (All control working)

patrick
dudu2 ton truc ne plante plus chez moi
il y a quelque raté de temps en temps la feuille se scroll et revient au scroll control mais ça pète plus

il y a quand même un léger soucis
quand je suis dans la feuille sur la listbox je scroll je sort je revient je sort je reviens au bout de quelque fois le scroll ne marche plus sur la listbox je suis obligé d'aller sur le textbox ou la combo pour scroller et quand je reviens sur la listbox le scroll marche a nouveau
 
Ben dis donc plus de 556 posts. Quand on a les tontons flingueurs dans une discussion , ça va très loin :

TontonFlingueurs.png


Rappel du Casting :
Monsieur Fernand : Lino Ventura - Dudu2
Raoul Volfoni : Bernard Blier - patricktoulon
 
Dernière édition:
Bonjours à tous,
@Dudu2
Pour moi sur Office 365 32bits et Windows 10 deux écrans cela fonctionne presque parfaitement, juste un problème sur la liste déroulante en ActiveX. Si l'on scrolle et que l'on sort du contrôle et que l'on continue de scroller la zone de la liste déroulante ne disparait pas et bouge avec la feuille.
Pour le reste, y compris les contrôle sur formulaire je n'ai pas constater de problème.
Je voulais mettre une vidéos mais pas d’abonnement à tous ces sites Youtube et compagnie...
 
Vu qu'il n'y a pas de retour de @patricktoulon, on va supposer que ça fonctionne chez lui car qui ne dit mot consent.

J'ai publié la version V16 encore "améliorée" notamment sur les tests sur le UserForm qui héberge le Control pour tester:
- S'il est chargé (présent ou fermé par ex. Alt + F4)
- Si il est caché (.Hide)
- Si il est minimisé.
Et un petit flag pour ne pas exécuter la fonction si un Scroll est en court (traitement pas terminé). Je ne sais pas si ça sert à quelque chose !

Je me suis rappelé que la moindre référence à une propriété du UserForm (UserForm.Name, UserForm.ListBox1.Visible, etc...) avait pour effet, s'il n'est pas chargé, de charger le UserForm et d'exécuter sa fonction UserForm_initialize().
D'où l'utilisation de cette fonction pour savoir s'il est chargé ou pas:
VB:
'--------------------------------------
'Returns True if the UserForm is loaded
'Warning ! If the argument is <UserForm.Name> it will be loaded and its <UserForm_Initialize>
'          Function executed because refering to a UserForm Property always prior loads it !
'--------------------------------------
Public Function IsUserFormLoaded(UserFormName As String) As Boolean
    Dim UserForm As Object
 
    'Loop through all loaded userforms
    For Each UserForm In VBA.UserForms
        If UCase(UserForm.Name) = UCase(UserFormName) Then Exit For
    Next UserForm
 
    If Not UserForm Is Nothing Then
        'Return value
        IsUserFormLoaded = True
    End If
End Function
 
Dernière édition:
re
si j'ai répondu mais je sais pas pourquoi ça n' a pas enregistré
bon alors oui ça plante plus (ça c'est dejà bien)
mais de temps en temps je perds le scroll sur la listbox( ca scroll tout simplement plus)
obligé d'aller sur le textbox ou combobox scroller 1 coup ou deux et revenir sur la listbox et là le scroll remarche
sur la listbox

il y a aussi de temps en temps le retour du scroll de la feuille pendant que je scroll la listbox
ça ne le fait pas sur la combo ou le textbox

voilà
 
Merci @Valtrase pour ton retour.
Si l'on scrolle et que l'on sort du contrôle et que l'on continue de scroller la zone de la liste déroulante ne disparait pas et bouge avec la feuille.
Ça c'est normal, les ComboBox ActiveX se comportent comme ça. Même sans Scroll, la fenêtre DropDown ne reste pas attachée à la fenêtre principale quand on scrolle la feuille.

Merci @patricktoulon pour ton retour.
Là je ne saurai pas gérer ces anomalies que tu mentionnes.

Merci @jurassic pork pour ce moment de rigolade !
 
pendant ce temps j'ai testé le mouse_ event sur la scrollbar

ben mon ami ça marche de feu de dieu
ça se résume ça pour tout les control et je dis bien tout les controls
VB:
'sub de scrolling tout  control
Public Sub scrolling(lDelta, control)
    Dim curpos As POINTAPI, yy&
    If TypeOf control Is ComboBox Then yy = control.Height / Ppx
    GetCursorPos curpos
    ShowCursor 0&
    If lDelta > 0& Then
        'remonter
        SetCursorPos (arx(1) - 10) + control.Width / Ppx, arx(2) + 5 + yy
       mouse_event MOUSEEVENTF_LEFTDOWN, (arx(1) - 10) + control.Width / Ppx, arx(2) + 5 + yy, 1, 0
        mouse_event MOUSEEVENTF_LEFTUP, (arx(1) - 10) + control.Width / Ppx, arx(2) + 5 + yy, 1, 0
     Else
        'descendre
        SetCursorPos (arx(1) - 10) + control.Width / Ppx, arx(4) - 5
        mouse_event MOUSEEVENTF_LEFTDOWN, (arx(1) - 10) + control.Width / Ppx, arx(2) + 5, 1, 0
        mouse_event MOUSEEVENTF_LEFTUP, (arx(1) - 10) + control.Width / Ppx, arx(2) + 5, 1, 0
   End If
    SetCursorPos curpos.X, curpos.Y
    ShowCursor 1
End Sub
demo1.gif


ouaip! merci jaafar triback
et la je me lance avec le sendinput comme ca on déplacera même plus la souris
 
Ouais, c'est un peu comme si Elon Musk faisait des voitures autonomes avec un gros bâton qui vient appuyer sur la pédale d'accélérateur et la pédale de frein. C'est du même acabit.

P.S. J'en rigole encore du truc de @jurassic pork !
C'est étrange, j'entends presque la voix de ces acteurs formidables prononcer ces paroles.
 
Dernière édition:
ca c'est ton opinion et si l'on doit parler de gros baton et que j'essaie de lire ton UAG
qui n'a cessé d'être modifiée et gonflé depuis sa V 1 et que sans doute ce n'est pas fini
je me dis que l'on a pas la même signification de "gros baton"
et surtout qu'a ce jour il y a encore des petits defauts

alors que des mec qui sont bien plus forts que moi et toi réuni font l'effort de faire un fichier
avec ce qui faut pour démontrer que c'est costaud et que tu méprise
des fois je me demande pourquoi j'accepte d'encore te parler

dorénavant ici c'est une discussion concernant mes essais pas le tiens ( je te le rappelle au cas ou)
c'est pas moi qui suis venu te chercher ni moi non plus qui viens te demander quoi que ce soit en MP (ca c'est toi)
donc si tu veux faire pareil tu n'a qu'a en faire autant ouvre toi une discussion et parle de ton truc
ne me répond pas tu m’insupporte
et si tu continue a insister je m'adresserais a celui qu'il faut
redescend sur terre tromblon
donc ici les essais de dudu2 terminé
et je le demande gentiment une fois

@jurassic pork pour info jaafar a mis a jour et donne des bonnes indication pour le lowword64
 
Ouh la ! Je te sens remonté comme une horloge mon @patricktoulon à vouloir méchamment m'exclure de la discussion, comme un censeur de la liberté d'expression comme on en voit de plus en plus. Et pourtant à un moment donné tu voulais m'y inclure. C'est parce que je challenge la méthode du dieu Jaafar à cliquer sur le GUI ? Ah mince, un blasphème. Mais tu sais, une discussion sans discussion c'est pas une discussion.

Si ça peut te faire plaisir, je me retire. De toutes façons au 565ème post on a fait le tour de la question, mais tu peux réchauffer le plat à volonté sans @Dudu2 pour te contrarier. 😎

Salutations la liste et merci pour vos retours.

P.S.
Toi-même !
 
Ouh la ! Je te sens remonté comme une horloge mon @patricktoulon à vouloir méchamment m'exclure de la discussion, comme un censeur de la liberté d'expression comme on en voit de plus en plus. Et pourtant à un moment donné tu voulais m'y inclure. C'est parce que je challenge la méthode du dieu Jaafar à cliquer sur le GUI ? Ah mince, un blasphème. Mais tu sais, une discussion sans discussion c'est pas une discussion.

Si ça peut te faire plaisir, je me retire. De toutes façons au 565ème post on a fait le tour de la question, mais tu peux réchauffer le plat à volonté sans @Dudu2 pour te contrarier. 😎

Salutations la liste et merci pour vos retours.

P.S.

Toi-même !
Bonjour à tous,
Bon ben je vais faire court… j’ai hésité à modérer le post de Patrick mais je pense que Dudu2 y a répondu de la juste manière et avec l’humour qu’il fallait.
Un petit rappel tout de même pour tous : les fils ne sont pas privatisés, on reste poli, on ne prend pas la grosse tête… et on garde le sens de l’humour. En tout cas c’est l’esprit de ce site.
Bon week-end à tous
 
Bonjour @David Aubert
ce n'est pas une question de privatisation de fil seulement que j'ai demandé de tester ce que je fait pas ce que fait @Dudu2
jusqu’à preuve du contraire je n'ai pas demandé de solution juste de pouvoir explorer les possibilités que l'on pouvait avoir avec peekmessage avec d'autres stratégies
donc si je m'emporte c'est justifié ça fait plus de 25 pages que @Dudu2 impose son truc alors que je ne lui ai pas demandé
jusqu’à même ignorer mes demandes
si pour toi c'est ça le respect alors on en a pas le même sens

je veux juste explorer d'autres choses que le hook le reste ne m’intéresse pas
si je veux parler avec lui de son truc j'irais sur sa page
si tu trouve que la question étant "scroller sans passer par le hooking "et qu'a la fin on se retrouve avec un fichier avec hooking alors qu'il a sa page pour l'imposer et bien pas moi
et surtout que des questions que j'ai posés et qui n'ont pas eu de réponse puisque perdues dans ses diverses propositions
c'est quand même un comble

si tu ouvre une discussion sur "comment faire un hachis parmentier" et que je viens imposer un "grattin dauphinois"
tu va me le dire une fois ou 2 après tu va certainement changer de ton
 
C'est surtout le ton que je déplore, et ce quelque soit ton niveau d'agacement, justifié ou non.
Quelles que soient les circonstances, merci de rester poli, de ne pas avoir de propos désagréables, et de rester humble.
A défaut je réagirai et je modérerai car c'est essentiel pour moi sur XLD.
C'est valable pour tous mais évidemment si j'ai réagi ici c'est parce que à mon sens ces valeurs n'étaient pas respectées et elles m'importent sur XLD.
Bonne journée
 
- 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

Discussions similaires

P
Réponses
1
Affichages
834
P
Retour