Défilement simultané de plusieurs listbox sous vba

ggt_jarre Messages postés 6 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 24 avril 2006 - 21 avril 2006 à 09:20
ggt_jarre Messages postés 6 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 24 avril 2006 - 24 avril 2006 à 08:28
bonjour,
j'ai plusieurs listbox cote à cote dans un userform qui se remplissent en même temps à partir de combobox
ces listbox réagissent comme un tableau (quand on sélectionne une ligne d'un des listbox ça sélectionne la même ligne sur tous les autres)
par contre je voudrai pouvoir les faire défiler en même temps quand on joue avec la scrollbar (à partir du moment où elle apparait quand il y a trop d'éléments à afficher)

si vous aviez une solution ça m'aiderai pas mal
merci !

10 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 avril 2006 à 09:48
En VB6, il existe la propriété TopIndex qui permet de connaître et définir l'item affiché en premier, ainsi, tu n'aurais qu'à modifier le topindex des autres listbox lors d'un événement scroll d'une des listbox.

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
ggt_jarre Messages postés 6 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 24 avril 2006
21 avril 2006 à 10:05
Je ne vois pas trop comment tu me dits de faire (désolé c'est pratiquement le 1er programme vb que je fait)

avec un truc style
listbox2.topIndex = listbox1.topIndex

?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 avril 2006 à 10:13
Tout à fait,

si la propriété existe en vba cependant : je n'en suis pas sûr...

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
ggt_jarre Messages postés 6 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 24 avril 2006
21 avril 2006 à 10:19
si si c'est bon elle existe mais j'ai un problème avec l'événement sur lequel déclencher ça
c'est un listbox1_quoi?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 avril 2006 à 11:00
listbox1_scroll : événement lorsqu'on modifie la valeur du scrollbar du listbox.

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
ggt_jarre Messages postés 6 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 24 avril 2006
21 avril 2006 à 11:09
Cet événement n'existe pas (en tout cas en vba)
tant pis merci quand même
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 avril 2006 à 11:24
Arf, à ce moment là, les méthodes bourrins :
1/ (méthode difficile) utiliser le subclassing pour capturer les événements WM_VSCROLL à destination de ton listbox afin de gérer toi même un événement scroll (fiable, mais très instable sous VB6 en mode debug, donc sûrement encore plus instable sous VBA !!!).
2/ Utiliser un timer pour espionner les changement de la propriété TopIndex (simulation de l'événement scroll en fait), beaucoup moins fiable, prend beaucoup plus de ressources, mais au moins ca fera pas planter ton application.

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
ggt_jarre Messages postés 6 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 24 avril 2006
21 avril 2006 à 11:38
oula ... ça a l'air bien mais je ne vois pas du tout par où commencer

ça serait sympa si tu pouvais m'aider mais je veux pas te faire perdre ton temps non plus, donc si ça t'emmerdes laisse tomber (je pourrais toujours essayer de me débrouiller autrement) :)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 avril 2006 à 12:51
C'est pourtant très simple (si tu as le contrôle timer dans vba) :
Place un contrôle timer dans ta feuille
Met la propriété Interval à 100
Dans l'événement Timer, rajoute ceci :

Static oldValue As Integer

if oldValue <> List1.TopIndex Then

let oldValue = List1.TopIndex
let List2.TopIndex = oldValue

end if

à adapter à ton code bien entendu.

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
ggt_jarre Messages postés 6 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 24 avril 2006
24 avril 2006 à 08:28
le contrôle s'appelle quelquechose_timer ou dans le style ?
Parce que je ne l'ai pas dans vba ... :(
0
Rejoignez-nous