Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Listbox, VBA, Multi-colonnes

2 réponses
Avatar
paql
Bonjour à tous,
En novembre dernier, JB m'indiquais comment transférer des items
sélectionnés d'un premier listbox vers un second listbox, puis supprimer les
items transférés du premier listbox.

> Private Sub UserForm_Initialize()
> Me.Source.AddItem "aaa"
> Me.Source.AddItem "bbb"
> Me.Source.AddItem "ccc"
> Me.Source.AddItem "ddd"
> Me.Source.AddItem "eee"
> Me.Source.AddItem "fff"
> Me.Source.AddItem "ggg"
> Me.Source.AddItem "hhh"
> Me.Source.MultiSelect = fmMultiSelectMulti
> End Sub
>
> Private Sub b_prend_Click()
> For i = 0 To Me.Source.ListCount - 1
> If Me.Source.Selected(i) = True Then Me.Dest.AddItem Me.Source.List
> (i)
> Next i
> For i = Me.Source.ListCount - 1 To 0 Step -1
> If Me.Source.Selected(i) = True Then Me.Source.RemoveItem i
> Next i
> End Sub

Si tout fonctionnait parfaitement avec des listbox d'une colonne chacun,
j'obtiens maintenant un message d'erreur si j'utilise le même code pour des
lisbox de 2 colonnes.

J'ai rempli le premier listbox à partir d'une variable "tableau" de 2
colonnes...

Puis-je modifier le code ci-haut pour transférer les données d'un listbox à
l'autre (puis supprimer les donnés transférées) ou si je dois mettre à jour
des tableaux pour chacun des listbox ?

Merci beaucoup et une excellente année à tous.

Paql

2 réponses

Avatar
JB
Bonsoir,

Transfert Liste avec Multi-sélection et Multicolonnes:

Private Sub UserForm_Initialize()
Me.Source.List = [A2:B6].Value
Me.Source.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub b_prend_Click()
For i = 0 To Me.Source.ListCount - 1
If Me.Source.Selected(i) = True Then
p = Me.Dest.ListCount
Me.Dest.AddItem
Me.Dest.List(p, 0) = Me.Source.List(i, 0)
Me.Dest.List(p, 1) = Me.Source.List(i, 1)
End If
Next i
For i = Me.Source.ListCount - 1 To 0 Step -1
If Me.Source.Selected(i) = True Then Me.Source.RemoveItem i
Next i
End Sub

Private Sub B_enlève_Click()
p = Me.Source.ListCount
Me.Source.AddItem
Me.Source.List(p, 0) = Me.Dest
Me.Source.List(p, 1) = Me.Dest.Column(1)
Me.Dest.RemoveItem Me.Dest.ListIndex
End Sub

http://cjoint.com/?bbvJlG4cOb

JB
http://boisgontierjacques.free.fr



On 1 jan, 20:13, paql wrote:
Bonjour à tous,
En novembre dernier, JB m'indiquais comment transférer des items
sélectionnés d'un premier listbox vers un second listbox, puis suppri mer les
items transférés du premier listbox.





> Private Sub UserForm_Initialize()
>   Me.Source.AddItem "aaa"
>   Me.Source.AddItem "bbb"
>   Me.Source.AddItem "ccc"
>   Me.Source.AddItem "ddd"
>   Me.Source.AddItem "eee"
>   Me.Source.AddItem "fff"
>   Me.Source.AddItem "ggg"
>   Me.Source.AddItem "hhh"
>   Me.Source.MultiSelect = fmMultiSelectMulti
> End Sub

> Private Sub b_prend_Click()
>   For i = 0 To Me.Source.ListCount - 1
>     If Me.Source.Selected(i) = True Then Me.Dest.AddItem Me.Sourc e.List
> (i)
>   Next i
>   For i = Me.Source.ListCount - 1 To 0 Step -1
>     If Me.Source.Selected(i) = True Then Me.Source.RemoveItem i
>   Next i
> End Sub

Si tout fonctionnait parfaitement avec des listbox d'une colonne chacun,
j'obtiens maintenant un message d'erreur si j'utilise le même code pour des
lisbox de 2 colonnes.

J'ai rempli le premier listbox à partir d'une variable "tableau" de 2
colonnes...

Puis-je  modifier le code ci-haut pour transférer les données d'un listbox à
l'autre (puis supprimer les donnés transférées) ou si je dois mettr e à jour
des tableaux pour chacun des listbox ?

Merci beaucoup et une excellente année à tous.

Paql- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
paql
Merci encore une fois... ça me permet d'avancer beaucoup.

Paql

"JB" a écrit :

Bonsoir,

Transfert Liste avec Multi-sélection et Multicolonnes:

Private Sub UserForm_Initialize()
Me.Source.List = [A2:B6].Value
Me.Source.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub b_prend_Click()
For i = 0 To Me.Source.ListCount - 1
If Me.Source.Selected(i) = True Then
p = Me.Dest.ListCount
Me.Dest.AddItem
Me.Dest.List(p, 0) = Me.Source.List(i, 0)
Me.Dest.List(p, 1) = Me.Source.List(i, 1)
End If
Next i
For i = Me.Source.ListCount - 1 To 0 Step -1
If Me.Source.Selected(i) = True Then Me.Source.RemoveItem i
Next i
End Sub

Private Sub B_enlève_Click()
p = Me.Source.ListCount
Me.Source.AddItem
Me.Source.List(p, 0) = Me.Dest
Me.Source.List(p, 1) = Me.Dest.Column(1)
Me.Dest.RemoveItem Me.Dest.ListIndex
End Sub

http://cjoint.com/?bbvJlG4cOb

JB
http://boisgontierjacques.free.fr



On 1 jan, 20:13, paql wrote:
> Bonjour à tous,
> En novembre dernier, JB m'indiquais comment transférer des items
> sélectionnés d'un premier listbox vers un second listbox, puis supprimer les
> items transférés du premier listbox.
>
>
>
>
>
> > Private Sub UserForm_Initialize()
> > Me.Source.AddItem "aaa"
> > Me.Source.AddItem "bbb"
> > Me.Source.AddItem "ccc"
> > Me.Source.AddItem "ddd"
> > Me.Source.AddItem "eee"
> > Me.Source.AddItem "fff"
> > Me.Source.AddItem "ggg"
> > Me.Source.AddItem "hhh"
> > Me.Source.MultiSelect = fmMultiSelectMulti
> > End Sub
>
> > Private Sub b_prend_Click()
> > For i = 0 To Me.Source.ListCount - 1
> > If Me.Source.Selected(i) = True Then Me.Dest.AddItem Me.Source.List
> > (i)
> > Next i
> > For i = Me.Source.ListCount - 1 To 0 Step -1
> > If Me.Source.Selected(i) = True Then Me.Source.RemoveItem i
> > Next i
> > End Sub
>
> Si tout fonctionnait parfaitement avec des listbox d'une colonne chacun,
> j'obtiens maintenant un message d'erreur si j'utilise le même code pour des
> lisbox de 2 colonnes.
>
> J'ai rempli le premier listbox à partir d'une variable "tableau" de 2
> colonnes...
>
> Puis-je modifier le code ci-haut pour transférer les données d'un listbox à
> l'autre (puis supprimer les donnés transférées) ou si je dois mettre à jour
> des tableaux pour chacun des listbox ?
>
> Merci beaucoup et une excellente année à tous.
>
> Paql- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -