Contrôler la scrollbar d'une ListBox ?

M

Mat

Guest
Bonjour,

Ma question est aussi simple que mon problème :

- Question : peut-on contrôler les scrollbars (ascenseurs) d'une ListBox ? Si oui, avec quelle commande, fonction ?

- Problème : celui-ci est purement esthétique....
Mon UserForm contient 2 ListBox qui affichent toutes les 2 le même RowSource (ça peut paraître inutile mais j'y tiens).
Lorsque je sélectionne l'une des lignes de ma liste 1, je veux que ça sélectionne aussi la même ligne dans la liste 2.
Ici rien de difficile puisque : "Liste2.ListIndex = Liste1.ListIndex"

Seulement si je sélectionne l'une des dernières lignes (j'utilise l'ascenseur pour aller la chercher car ma liste est trop petite ; sa taille est figée et je ne souhaite pas la changer), cela sélectionne bien la même ligne dans la liste 2 mais pas au même niveau concernant la scrollbar.

Rien ne vaut un bon exemple plutôt qu'une longue explication.
Reportez-vous au fichier "Srollbar ListBox.zip" pour avoir un exemple simple.

Merci d'avance.
 

Pièces jointes

  • Srollbar_ListBox.zip
    10.6 KB · Affichages: 47
E

Eric C

Guest
Bonsoir le forum
Bonsoir Mat


Ces deux procédures à ajouter dans ton code

Private Sub ListBox1_Change()
ListBox2.ListIndex = ListBox1.ListIndex
End Sub

Private Sub ListBox2_Change()
ListBox1.ListIndex = ListBox2.ListIndex
End Sub

Bon Ouikand à toutes & à tous
@ + Eric C
 
M

Mat

Guest
Bonsoir tout le monde, bonsoir Eric.

Merci pour ta réponse mais ce n'est pas ce que je souhaite... ma mauvaise explication y étant sûrement pour quelque chose.

Dans mon exemple (pièce jointe) j'ai utilisé les 2 procédures que tu m'indiques (à part que j'utilise _Click() au lieu de _Change() ).

Ce que je souhaite, c'est obtenir les 2 lignes sélectionnées au même niveau : quelles soient l'une à côté de l'autre.
Lorsque je demande à sélectionner la même ligne dans la liste 2 cela se fait bien mais les lignes ne sont pas à la même hauteur (la deuxième étant bien souvent en bas de la liste).

Donc, je voudrais savoir s'il est possible de maîtriser les scrollbars de la liste pour que les 2 lignes ainsi sélectionnées soient au même niveau ?

Merci d'avance.
 
V

Vériland

Guest
Bonsoir Mat, EricC et toi le forum,

smiley_672.gif
Juste de passage ...

est-ce que le fait de répartir tes données dans une seule ListBox ne serait pas plus simple ...

En fait, tu peux relever tes données comme par exemple A1:B12 et répartir cette zone dans deux colonnes dans une seule Listbox ...

ce qui donnerait ceci :

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.RowSource = "A1:B12"
End Sub


et là, ta sélection sera toujours alignée ... c'est p'têt plus simple que de le faire dans deux ListBox !!??!!

Bonne année 2005
smiley_228.gif


A+ Vériland
 
M

Mat

Guest
Bonsoir tout le monde, Véroland,

Merci pour ta réponse mais, même si ça semble plus logique, je souhaiterai garder les 2 listes afin de pouvoir afficher les données de 2 lignes différentes en même temps.
En effet, j'ai créé une ChekBox qui sert d'option de synchronisation des 2 listes : si cochée alors synchro, sinon pas synchro.

Je connais bien ta méthode que j'ai utilisé ailleurs dans mon Userform.

Si d'autres ont une idée sur la question, je suis preneur.

Merci.
 
M

Mytå

Guest
Bonsoir le Forum

Mat essaye ce bout de code cela devrait résoudre ton problème

Private Sub ListBox1_Click()

With ListBox2
.TopIndex = ListBox1.TopIndex
.ListIndex = ListBox1.ListIndex
End With

End Sub

Private Sub ListBox2_Click()

With ListBox1
.TopIndex = ListBox2.TopIndex
.ListIndex = ListBox2.ListIndex
End With

End Sub

Mytå
 

Discussions similaires

Statistiques des forums

Discussions
312 971
Messages
2 094 045
Membres
105 926
dernier inscrit
Odyssea