Bonjour,
Je suis en train de créer un formulaire, et je galère un peu.
Dans mon formulaire, j'ai 2 zones de listes, que je voudrais faire correspondre, dans le sens où je voudrais mettre des éléments de ma liste de Gauche vers ma Liste de Droite, et vice-versa, via un bouton.
Ma liste de gauche est issue d'une requête sur une table pour la renseigner dès le chargement du formulaire.
Je voudrais donc pouvoir sélectionner des éléments de cette liste, pour les "basculer" à droite. Pour cela, j'ai écrit ce code :
Sachant que ce sont des listes à plusieurs colonnes, déjà pour ajouter des éléments, je suis obligé d'utiliser le Additem (ou en tout cas je vois pas d'autres moyens...) et donc récupérer les valeurs de ma ligne sélectionnée de ma liste source, pour après pouvoir les rajouter à ma liste cible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Private Sub TransfererUn(lstSource As ListBox, lstCible As ListBox) ' Vérifier qu'un élément est sélectionné If lstSource.ListIndex = -1 Then MsgBox "Sélectionnez un élément au préalable !", vbInformation Exit Sub End If ' Déplacer l'élément dans l'autre liste For i = lstSource.ListCount - 1 To 0 Step -1 If lstSource.Selected(i) = True Then ValeurPourAutreListe = "" ' Déplacer l'élément dans l'autre liste For j = 0 To lstSource.ColumnCount - 1 ValeurPourAutreListe = ValeurPourAutreListe & lstSource.Column(j, i) & ";" Next j Debug.Print ValeurPourAutreListe lstCible.AddItem Left(ValeurPourAutreListe, Len(ValeurPourAutreListe) - 1) ' suppression de la liste source lstSource.RemoveItem i End If Next i End Sub
Par contre, le removeitem ne fonctionne pas, car ma liste de gauche, comme je vous l'ai dit, est le résultat d'une requête.
Au moment du remove, il me dit que ma liste source doit être paramétrée en "Liste valeurs", ce qui m'arrange pas des masses.
Si je la transforme en "Liste Valeurs", ça veut dire qu'au chargement de mon formulaire, je dois faire des additem pour chaque ligne de ma requête, ce qui n'est pas idéal, je pense.
Donc je voudrais savoir si vous connaissiez un moyen de contourner cela, et surtout cette erreur.
Merci pour vos retours, en espérant avoir été clair dans ma demande.
Partager