Lier les scrolls dans un userform

  • Initiateur de la discussion Initiateur de la discussion Gi²
  • Date de début Date de début

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 !

G

Gi²

Guest
Bonjour au Forum et à tous les cerveaux qui le font vivre: les lents - as mine - pour les questions, les brillants - que je sollicite aujourd'hui - pour les réponses! ;-)

Question:
Est-il possible de lier les scrolls de 2 objets dans un userform?

Exemple, peut-on piloter les scrolls de 2 frames distincts (qui ont bien un événement "quand scroll") en agissant sur l'un d'eux?

Question subsidiaire: est-ce possible avec 2 listbox? (qui elles, n'ont PAS d'événement "quand scroll")?

Version utilisée: XL 2003

Merci d'avance!

Gi².

P.S.: Bonjour à Thieb'! ;-)
 
Bonsoir à tous, salut Gigi…

Pour ta première question, ceci devrait te dépanner:

Private Sub Frame1_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)
Frame2.ScrollLeft = Frame1.ScrollLeft
Frame2.ScrollTop = Frame1.ScrollTop
End Sub


Attention, ici, les 2 frames ont les mêmes dimensions, sinon, il faut peut-être trouver un facteur multiplicateur entre les 2.
Ensuite, si tu veux aussi qu'un scroll sur la 2 agisse sur la 2, tu refais pareil pour Private Sub Frame2_Scroll
MAIS, un scroll sur la 2 va déclencher un scroll sur la 1 qui va relancer la première procédure… Et j'ai eu un plantage.
Il faudra donc rajouter un booleen qui interdise la deuxième procédure de se déclencher à partir de la première et vice versa!

Pour le scroll d'une listBox, là, je ne vois pas trop comment l'intercepter. Je ne sais même pas s'il est possible pour une seule ListBox de connaître la valeur de son scroll!

Bon courage, et à demain (avec beaucoup de courage pour aborder notre avant-dernière semaine!!!!)
 
Bonjour à tous,

Je reviens sur ce fil après avoir revu le problème avec Gigi, car ma soluce n'était pas tout à fait satisfaisante:
l'événement Scroll de la frame1 n'entraînait la modification de scrolltop de frame 1 qu'après cette procédure terminée. En cliquant sous la bande du scroll, pour faire un LargeScroll, cela ne se répercutait pas correctement sur la Frame 2.
Voici donc la procédure modifiée:

Private Sub Frame1_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)
Frame2.ScrollLeft = Frame2.ScrollLeft + RequestDx
Frame2.ScrollTop = Frame2.ScrollTop+RequestDy
End Sub


Cette fois, la frame 2 subit le même Scroll dans tous les cas: on prend l'ancienne valeur de scroll de la frame 2 et on lui ajout l'ordre de scroll appliqué à la frame 1.

Bonne soirée à tous.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
1 K
Christian
C
Retour