[VBA] - Ajouter / supprimer éléments de deux ListBox associées

Bonsoir,

J'utilise deux ListBox pour faire passer de l'une à l'autre les éléments sur lesquels on clique.
J'ai testé dans un sens : de la ListBox1 (remplie) vers la ListBox2 (vide)
Il faut que les éléments de la LB1 disparaissent et qu'ils apparaissent dans la LB2 lorsqu'on clique dessus.

Le passage de l'une vers l'autre fonctionne, en revanche, je ne parviens pas à relister les éléments dans la LB1.

Cette dernière apparaît vide... Le pire c'est qu'en pas à pas, tout à l'air de fonctionner ! Le dictionnaire qui alimente la LB1 se rempli correctement. C'est à l'étape Me.ListBox1.List = d.keys

32lb1-vers-lb2.xlsm (22.21 Ko)

code

/code

Bonsoir Drosophile, bonsoir le forum,

Une autre méthode au double-clic. Quand on renvoie de la Listbox2 vers la ListBox1, les données ne sont plus triées comme initialement mais on peu y arriver si nécessaire.

Le code :

Option Explicit

Private Sub UserForm_Initialize()
Dim OT As Worksheet
Dim DC As Integer

Me.StartUpPosition = 0
Me.Top = 155
Me.Left = 150
Set OT = ActiveSheet
DC = OT.Cells(1, Application.Columns.Count).End(xlToLeft).Column
Me.ListBox1.Column = OT.Range(OT.Cells(1, 2), OT.Cells(2, DC)).Value
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim I As Integer
With Me.ListBox1
    For I = .ListCount - 1 To 0 Step -1
        If .Selected(I) = True Then
            Me.ListBox2.AddItem .List(I)
            .RemoveItem (I)
        End If
    Next I
End With
End Sub

Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim I As Integer
With Me.ListBox2
    For I = .ListCount - 1 To 0 Step -1
        If .Selected(I) = True Then
            Me.ListBox1.AddItem .List(I)
            .RemoveItem (I)
        End If
    Next I
End With
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Bonsoir,

Merci, dans le fonctionnement, c'est exactement ça.
Simplement pour info, s'il y a deux éléments dans la ListBox2 et que l'on double clique sur le second, alors les 2 sont renvoyés dans la ListBox1.

C'est un tout petit détail, qui ne gênera pas du tout l'utilisation, mais je le signale dans le cas où ça cacherait autre chose ?

Autrement pas de soucis, ça fait très bien le travail, Merci !
Bonne soirée.

Le code corrigé :

Option Explicit

Private Sub UserForm_Initialize()
Dim OT As Worksheet
Dim DC As Integer

Me.StartUpPosition = 0
Me.Top = 155
Me.Left = 150
Set OT = ActiveSheet
DC = OT.Cells(1, Application.Columns.Count).End(xlToLeft).Column
Me.ListBox1.Column = OT.Range(OT.Cells(1, 2), OT.Cells(2, DC)).Value
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim I As Integer
With Me.ListBox1
    For I = .ListCount - 1 To 0 Step -1
        If .Selected(I) = True Then
            Me.ListBox2.AddItem .List(I)
            .RemoveItem (I)
            .ListIndex = -1
        End If
    Next I
End With
End Sub

Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim I As Integer
With Me.ListBox2
    For I = .ListCount - 1 To 0 Step -1
        If .Selected(I) = True Then
            Me.ListBox1.AddItem .List(I)
            .RemoveItem (I)
            .ListIndex = -1
        End If
    Next I
End With
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Bonjour,

Merci, du coup il n'y a plus rien à redire ! Merci

Bonne journée.

Rechercher des sujets similaires à "vba ajouter supprimer elements deux listbox associees"