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

PB communication entre 2 listbox

7 réponses
Avatar
Cecile
Bonjour,
j'aimerais faire "communiquer des valeurs" entre 2 listbox
c'est à dire choisir des valeurs dans lstbox1, et en cliquant sur le bouton
BT1, mettre les valeurs dans lstbox2, et les supprimer de lstbox1

Voici mon code :

For i = 0 To lstbox1.ListCount - 1
If lstbox1(i) = True Then
lstbox2.AddItem lstbox1.List(i)
lstbox1.RemoveItem i
End If
Next i

Le problème est que j'ai l'erreur suivante:
"Erreur d'éxécution"
" Impossible de lire la propriété Selected. Argument non valide"

à noter que je n'ai pas cette erreur quand j'enlève la ligne avec
removeItem.

Comment faire pour que la valeur qui est passé dans lstbox2 ne soit plus
dans lstbox1?
merci

7 réponses

Avatar
ionel.sbiera
Hi,
je pense que t'as besoin de ca:

Private Sub CommandButton1_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox2.AddItem ListBox1.Value
Me.ListBox1.RemoveItem (i)
Else
End If
Next


End Sub
Avatar
Cecile
merci pour ta réponse aussi rapide
mais malheureusement, en ajoutant le "Me." j'ai le même message

a écrit dans le message de
news:
Hi,
je pense que t'as besoin de ca:

Private Sub CommandButton1_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox2.AddItem ListBox1.Value
Me.ListBox1.RemoveItem (i)
Else
End If
Next


End Sub



Avatar
Jacques93
Bonjour Cecile,

Essaie :

Dim i As Integer

For i = lstBox1.ListCount - 1 To 0 Step -1
If lstBox1.Selected(i) Then
lstBox2.AddItem lstBox1.List(i), 0
lstBox1.RemoveItem i
End If
Next i

Quand on vide une liste, il vaut mieux commencer par la fin :-)

Bonjour,
j'aimerais faire "communiquer des valeurs" entre 2 listbox
c'est à dire choisir des valeurs dans lstbox1, et en cliquant sur le bouton
BT1, mettre les valeurs dans lstbox2, et les supprimer de lstbox1

Voici mon code :

For i = 0 To lstbox1.ListCount - 1
If lstbox1(i) = True Then
lstbox2.AddItem lstbox1.List(i)
lstbox1.RemoveItem i
End If
Next i

Le problème est que j'ai l'erreur suivante:
"Erreur d'éxécution"
" Impossible de lire la propriété Selected. Argument non valide"

à noter que je n'ai pas cette erreur quand j'enlève la ligne avec
removeItem.

Comment faire pour que la valeur qui est passé dans lstbox2 ne soit plus
dans lstbox1?
merci





--
Cordialement,

Jacques.

Avatar
Cecile
merci
ça marche très bien
"Jacques93" a écrit dans le message de
news:et%
Bonjour Cecile,

Essaie :

Dim i As Integer

For i = lstBox1.ListCount - 1 To 0 Step -1
If lstBox1.Selected(i) Then
lstBox2.AddItem lstBox1.List(i), 0
lstBox1.RemoveItem i
End If
Next i

Quand on vide une liste, il vaut mieux commencer par la fin :-)

Bonjour,
j'aimerais faire "communiquer des valeurs" entre 2 listbox
c'est à dire choisir des valeurs dans lstbox1, et en cliquant sur le
bouton


BT1, mettre les valeurs dans lstbox2, et les supprimer de lstbox1

Voici mon code :

For i = 0 To lstbox1.ListCount - 1
If lstbox1(i) = True Then
lstbox2.AddItem lstbox1.List(i)
lstbox1.RemoveItem i
End If
Next i

Le problème est que j'ai l'erreur suivante:
"Erreur d'éxécution"
" Impossible de lire la propriété Selected. Argument non valide"

à noter que je n'ai pas cette erreur quand j'enlève la ligne avec
removeItem.

Comment faire pour que la valeur qui est passé dans lstbox2 ne soit plus
dans lstbox1?
merci





--
Cordialement,

Jacques.



Avatar
Cecile
j'ai encore juste un petit problème, et après, je ne te dérange plus:
je voudrais faire la même chose avec lstbox2, c'est à dire les supprimer et
les remettre dans lstbox1.
j'ai fait comme tu m'as dit: je commence par la fin pour la suppression.
le problème, c'est que dans ma lstbox1, les informations se retrouvent à la
fin, non triées.

comment puis-je faire pour soit mettre les valeurs de lstbox1 au bon
endroit, soir les retriées à la fin?

merci
"Jacques93" a écrit dans le message de
news:et%
Bonjour Cecile,

Essaie :

Dim i As Integer

For i = lstBox1.ListCount - 1 To 0 Step -1
If lstBox1.Selected(i) Then
lstBox2.AddItem lstBox1.List(i), 0
lstBox1.RemoveItem i
End If
Next i

Quand on vide une liste, il vaut mieux commencer par la fin :-)

Bonjour,
j'aimerais faire "communiquer des valeurs" entre 2 listbox
c'est à dire choisir des valeurs dans lstbox1, et en cliquant sur le
bouton


BT1, mettre les valeurs dans lstbox2, et les supprimer de lstbox1

Voici mon code :

For i = 0 To lstbox1.ListCount - 1
If lstbox1(i) = True Then
lstbox2.AddItem lstbox1.List(i)
lstbox1.RemoveItem i
End If
Next i

Le problème est que j'ai l'erreur suivante:
"Erreur d'éxécution"
" Impossible de lire la propriété Selected. Argument non valide"

à noter que je n'ai pas cette erreur quand j'enlève la ligne avec
removeItem.

Comment faire pour que la valeur qui est passé dans lstbox2 ne soit plus
dans lstbox1?
merci





--
Cordialement,

Jacques.



Avatar
Jacques93
Tu ne déranges pas,

Les Listbox sous Excel n'ayant pas, sauf erreur de ma part, de propriété
Sorted, il faut le faire soit même, cela dit pas la peine de tout
retrier à la fin. Essaie ceci :

Private Sub cmdAdd1_Click()
Add2List lstBox1, lstBox2
End Sub

Private Sub cmdAdd2_Click()
Add2List lstBox2, lstBox1
End Sub

Private Sub Add2List(lst1 As MSForms.ListBox, lst2 As MSForms.ListBox)
Dim i As Integer
Dim j As Integer

For i = lst1.ListCount - 1 To 0 Step -1
If lst1.Selected(i) Then
For j = 0 To lst2.ListCount - 1
If lst1.List(i) < lst2.List(j) Then Exit For
Next j
lst2.AddItem lst1.List(i), j
lst1.RemoveItem i
End If
Next i
End Sub

j'ai encore juste un petit problème, et après, je ne te dérange plus:
je voudrais faire la même chose avec lstbox2, c'est à dire les supprimer et
les remettre dans lstbox1.
j'ai fait comme tu m'as dit: je commence par la fin pour la suppression.
le problème, c'est que dans ma lstbox1, les informations se retrouvent à la
fin, non triées.

comment puis-je faire pour soit mettre les valeurs de lstbox1 au bon
endroit, soir les retriées à la fin?

merci
"Jacques93" a écrit dans le message de
news:et%

Bonjour Cecile,

Essaie :

Dim i As Integer

For i = lstBox1.ListCount - 1 To 0 Step -1
If lstBox1.Selected(i) Then
lstBox2.AddItem lstBox1.List(i), 0
lstBox1.RemoveItem i
End If
Next i

Quand on vide une liste, il vaut mieux commencer par la fin :-)


Bonjour,
j'aimerais faire "communiquer des valeurs" entre 2 listbox
c'est à dire choisir des valeurs dans lstbox1, et en cliquant sur le



bouton

BT1, mettre les valeurs dans lstbox2, et les supprimer de lstbox1

Voici mon code :

For i = 0 To lstbox1.ListCount - 1
If lstbox1(i) = True Then
lstbox2.AddItem lstbox1.List(i)
lstbox1.RemoveItem i
End If
Next i

Le problème est que j'ai l'erreur suivante:
"Erreur d'éxécution"
" Impossible de lire la propriété Selected. Argument non valide"

à noter que je n'ai pas cette erreur quand j'enlève la ligne avec
removeItem.

Comment faire pour que la valeur qui est passé dans lstbox2 ne soit plus
dans lstbox1?
merci





--
Cordialement,

Jacques.







--
Cordialement,

Jacques.



Avatar
michdenis
Bonjour Cecile,

Pour initialer ta liste à l'ouverture du formulaire :
En adaptant le nom de la feuille et de la plage de cellules ...
'--------------------------------
Private Sub UserForm_Initialize()

Dim Tblo As Variant
With Worksheets("Feuil1")
Tblo = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Me.ListBox1.List = Tblo

End Sub
'--------------------------------


Transférer données listbox1 vers listbox2 dans le même ordre :

'---------------------------------
Private Sub CommandButton1_Click()

Dim Nb As Long, A As Integer
With ListBox1
Nb = .ListCount - 1
Do While A <= Nb
If .Selected(A) Then
ListBox2.AddItem Me.ListBox1.List(A)
.ListIndex = A
.RemoveItem .ListIndex
Nb = Nb - 1
A = A - 1
End If
A = A + 1
Loop
End With

End Sub
'---------------------------------


Pour trier une liste après avoir ajouté des données :

Private Sub CommandButton2_Click()

Me.ListBox2.List = ListSort(Me.ListBox2.List)

End Sub

'La fonction tu peux la copier dans un module standard ou la laisser
'dans le module du formulaire
'-----------------------------------
Function ListSort(liSte)
' Trie un tableau en ordre croissant

Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp
First = LBound(liSte)
Last = UBound(liSte)
For i = First To Last - 1
For j = i + 1 To Last
If liSte(i, 0) > liSte(j, 0) Then
Temp = liSte(j, 0)
liSte(j, 0) = liSte(i, 0)
liSte(i, 0) = Temp
End If
Next j
Next i
ListSort = liSte
End Function
'-----------------------------------



Salutations!




"Cecile" a écrit dans le message de news:
Bonjour,
j'aimerais faire "communiquer des valeurs" entre 2 listbox
c'est à dire choisir des valeurs dans lstbox1, et en cliquant sur le bouton
BT1, mettre les valeurs dans lstbox2, et les supprimer de lstbox1

Voici mon code :

For i = 0 To lstbox1.ListCount - 1
If lstbox1(i) = True Then
lstbox2.AddItem lstbox1.List(i)
lstbox1.RemoveItem i
End If
Next i

Le problème est que j'ai l'erreur suivante:
"Erreur d'éxécution"
" Impossible de lire la propriété Selected. Argument non valide"

à noter que je n'ai pas cette erreur quand j'enlève la ligne avec
removeItem.

Comment faire pour que la valeur qui est passé dans lstbox2 ne soit plus
dans lstbox1?
merci