OVH Cloud OVH Cloud

Synchroniser 3 listes

3 réponses
Avatar
AnThOnY
Comment peut on synchroniser 3 listes entre elles, pour que quand on choisit
le 1 er de la liste 1, les autres se synchronisent aussi, et affiche leur 1er
de la ligne et ainsi de suite.

Merci d'avance

3 réponses

Avatar
Nicolas B.
Salut Anthony,

Pour synchroniser les listes 2 et 3 lorsque la première change
(fonctionne aussi avec le multiselect) :

Private Sub ListBox1_Change()
For i = 0 To ListBox1.ListCount - 1
ListBox2.Selected(i) = ListBox1.Selected(i)
ListBox3.Selected(i) = ListBox1.Selected(i)
Next
End Sub


Et si tu veux aussi que les listes 1 et 3 se synchronisent lorsque 2 est
modifié, et idem avec la liste 3, il faut ruser un peu pour ne pas se
retrouver dans un cercle viscieux :

Dim Tps As Double

Private Sub ListBox1_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox2.Selected(i) = ListBox1.Selected(i)
ListBox3.Selected(i) = ListBox1.Selected(i)
Next
End If
End Sub

Private Sub ListBox2_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = ListBox2.Selected(i)
ListBox3.Selected(i) = ListBox2.Selected(i)
Next
End If
End Sub

Private Sub ListBox3_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = ListBox3.Selected(i)
ListBox2.Selected(i) = ListBox3.Selected(i)
Next
End If
End Sub


A+
Nicolas B.


AnThOnY wrote:
Comment peut on synchroniser 3 listes entre elles, pour que quand on choisit
le 1 er de la liste 1, les autres se synchronisent aussi, et affiche leur 1er
de la ligne et ainsi de suite.

Merci d'avance


Avatar
AnThOnY
merci pour cette réponse, mais ou faut il renter ces lignes de codes pour que
cela fonctionne.
merci


Salut Anthony,

Pour synchroniser les listes 2 et 3 lorsque la première change
(fonctionne aussi avec le multiselect) :

Private Sub ListBox1_Change()
For i = 0 To ListBox1.ListCount - 1
ListBox2.Selected(i) = ListBox1.Selected(i)
ListBox3.Selected(i) = ListBox1.Selected(i)
Next
End Sub


Et si tu veux aussi que les listes 1 et 3 se synchronisent lorsque 2 est
modifié, et idem avec la liste 3, il faut ruser un peu pour ne pas se
retrouver dans un cercle viscieux :

Dim Tps As Double

Private Sub ListBox1_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox2.Selected(i) = ListBox1.Selected(i)
ListBox3.Selected(i) = ListBox1.Selected(i)
Next
End If
End Sub

Private Sub ListBox2_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = ListBox2.Selected(i)
ListBox3.Selected(i) = ListBox2.Selected(i)
Next
End If
End Sub

Private Sub ListBox3_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = ListBox3.Selected(i)
ListBox2.Selected(i) = ListBox3.Selected(i)
Next
End If
End Sub


A+
Nicolas B.


AnThOnY wrote:
Comment peut on synchroniser 3 listes entre elles, pour que quand on choisit
le 1 er de la liste 1, les autres se synchronisent aussi, et affiche leur 1er
de la ligne et ainsi de suite.

Merci d'avance





Avatar
Nicolas B.
Si tes listes sont dans un UserForm, tu insères dans le code de ton
UserForm.

Si tes listes sont dans ta feuille Excel avec des listes créées avec la
BO Contrôles (et pas Formulaire). Tu mets l'une ou l'autre des solutions
dans le code de ta feuille (ALT + F11 puis double clic sur Feui11 et tu
colles dans la fenêtre à droite).

Et si les listes sont faites avec la BO Formulaire, je n'ai pas de
solution à te donner :-(


A+
Nicolas B.


AnThOnY wrote:
merci pour cette réponse, mais ou faut il renter ces lignes de codes pour que
cela fonctionne.
merci



Salut Anthony,

Pour synchroniser les listes 2 et 3 lorsque la première change
(fonctionne aussi avec le multiselect) :

Private Sub ListBox1_Change()
For i = 0 To ListBox1.ListCount - 1
ListBox2.Selected(i) = ListBox1.Selected(i)
ListBox3.Selected(i) = ListBox1.Selected(i)
Next
End Sub


Et si tu veux aussi que les listes 1 et 3 se synchronisent lorsque 2 est
modifié, et idem avec la liste 3, il faut ruser un peu pour ne pas se
retrouver dans un cercle viscieux :

Dim Tps As Double

Private Sub ListBox1_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox2.Selected(i) = ListBox1.Selected(i)
ListBox3.Selected(i) = ListBox1.Selected(i)
Next
End If
End Sub

Private Sub ListBox2_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = ListBox2.Selected(i)
ListBox3.Selected(i) = ListBox2.Selected(i)
Next
End If
End Sub

Private Sub ListBox3_Change()
If Tps <> Now Then
Tps = Now
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = ListBox3.Selected(i)
ListBox2.Selected(i) = ListBox3.Selected(i)
Next
End If
End Sub


A+
Nicolas B.


AnThOnY wrote:

Comment peut on synchroniser 3 listes entre elles, pour que quand on choisit
le 1 er de la liste 1, les autres se synchronisent aussi, et affiche leur 1er
de la ligne et ainsi de suite.

Merci d'avance