1 pièce(s) jointe(s)
Échange entre deux ListBox
Bonjour,
J'ai un souci sur un fichier dont je joins une version allégée pour mon problème.
J'ai un formulaire avec 8 listbox (fmMultiselectsingle). Si je selectionne 1 item sur 2 des listbox, je souhaite simplement échanger ces deux items.
J'arrive bien à vider les listbox et à enregistrer les nouvelles valeurs dans les tableaux de variable, mais seule la premiere listbox cliquée et remplie, la seconde reste vide.
Merci d'avance pour votre aide et désolé pour le code qui suit que je n'arrive pas à indenter dans ce message
Voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
Private Sub EchangeEntreList()
Dim Ctl As Control, X1 As String, X2 As String, A As String, B As String
X = 0
X1 = ""
X2 = ""
With UserForm7
For Each Ctl In .Controls
If TypeName(Ctl) = "ListBox" Then
For i = 0 To Ctl.ListCount - 1
If Ctl.Selected(i) Then X = X + 1
Select Case X
Case Is = 1
If X1 = "" Then
X1 = Right(Ctl.Name, 1)
End If
Case Is = 2
If X2 = "" Then
X2 = Right(Ctl.Name, 1)
End If
End Select
Next i
End If
Next Ctl
End With
If X = 2 Then
With UserForm7
Dim text1 As String, text2 As String
t1 = .Controls("ListBox" & X1).List 't1 tableau premiere listbox
text1 = .Controls("ListBox" & X1).ListIndex 'text1 selection premiere listbox
t2 = .Controls("ListBox" & X2).List 't2 tableau seconde listbox
text2 = .Controls("ListBox" & X2).ListIndex 'text2 selection seconde listbox
For i = 0 To 4
A = t1(text1, i) 'txt premiere listbox
B = t2(text2, i) 'txt seconde listbox
t1(text1, i) = B 'remplacement txt premiere listbox par txt seconde dans tableau
t2(text2, i) = A 'remplacement txt seconde listbox par txt premiere dans tableau
Next i
.Controls("ListBox" & X1).Clear
.Controls("ListBox" & X1).List = t1
.Controls("ListBox" & X2).Clear
.Controls("ListBox" & X2).List = t2
End With
End If
End Sub |