listbox multiselection filtrer

roro69

XLDnaute Impliqué
Bonjour et merci du temps consacré
Voilà ce que je souhaiterais faire:
J'ai deux listbox dans mon USF
Listbox1 ET ListBOX2
Donc la listbox1 est chargé avec les valeurs d'une colonne;ensuite je fltre les valeurs de la listbox1 comme ceci pour charger ma Listbox2:
Set rgnu = Feuil16.Range("A7", Feuil16.Range("A65536").End(xlUp))

With ListBox2
.Clear
For Each cel In rgnu
If cel = ListBox1 Then
.AddItem cel.Offset(0, 1)

End If
Next cel
If .ListCount > 0 Then .ListIndex = 0
End With
Jusque là pas de problème mais ce que souhaiterais faire c'est de permettre la multiselection dans la listbox1 et là je ne vois pas comment faire.
Merci d'avance pour vos réponses
 

YANN-56

XLDnaute Barbatruc
Re : listbox multiselection filtrer

Bonjour roro69, et à ceux qui passeront par là.

N'as-tu pas pensé utiliser des ListView plutôt que des ListBoxes?

Pour ma part, j'ai opté pour celles-là au lieu de celles-ci. (Sauf souci de mise en page)
Car l'utilisation est bien plus simple.

Si cela t'intéresse, je peux te suivre par un exemple.
(Sous réserve d'avoir bien compris ta recherche effective)

Au plaisir.

Yann
 

roro69

XLDnaute Impliqué
Re : listbox multiselection filtrer

Bonjour
Meci pour vos réponses
Yann je suis preneur pour voir ta listview.
JNP c'est pas tout t'a fait ce que je recherhe;
Dans ma listebox1 je charge des catégories; quand je clique sur la listebox1 je récupère les infos associées comme ci dessous ; là pas de problème mais est -il possible de selectionner plusieurs item dans la listbox1 et récupérer les infos associer dans la listbox2.

Set rgnu = Feuil16.Range("A7", Feuil16.Range("A65536").End(xlUp))

With ListBox2
.Clear
For Each cel In rgnu
If cel = ListBox1 Then
.AddItem cel.Offset(0, 1)

End If
Next cel
If .ListCount > 0 Then .ListIndex = 0
End With
Merci du temps consacé
 

JNP

XLDnaute Barbatruc
Re : listbox multiselection filtrer

Re :),
@ Roro69 : Ce que je te donnais, c'est la liste des éléments sélectionnés dans la ListBox1. Après, je les chargeais dans la ListBox2, mais tu peux en faire ce que tu souhaites ;).
@ Yann : N'hésite-pas à poster un tuto sur les ListView, car en ce qui me concerne (et au fil des post, j'ai bien peur de n'être pas le seul...), je sais que les ListView permettent bien des choses que ne permettent pas les ListBox, mais de là à dire que l'utilisation en est bien plus simple :eek:, il y a un pas que je franchirais pas :p...
Bonne soirée :cool:
 

roro69

XLDnaute Impliqué
Re : listbox multiselection filtrer

Re jnp
Mais je ne veut pas reprendre les élément de ma listboxx1 pour les envoyer dans ma lisbox2 .Je veut récupérer les valeurs associés comme dans le code ci-dessus
Si je fais comme le code que tu m'a envoyé(code ci-dessous çà ne marche pas)
Set rgnu = Feuil16.Range("A7", Feuil16.Range("A65536").End(xlUp))
With ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) = True Then

With ListBox2
.Clear
For Each cel In rgnu
If cel = ListBox1.List(I) Then
.AddItem cel.Offset(0, 1)

End If
Next cel
If .ListCount > 0 Then .ListIndex = 0
End With
End If
Next I
End With


A++
Merci du temps passé
 

YANN-56

XLDnaute Barbatruc
Re : listbox multiselection filtrer

Finalement JNP, je suis bien heureux de te rencontrer ici en cette fin de journée.

Il est souvent bon de se voir contrecarrer ses certitudes! :)

Voici donc une recherche dans la colonne "B" des identités de la colonne "A".
après en avoir sélectionné les noms.
(Bidouille vite faite, et édulcorée jointe)

Quant à l'apparence de la ListView1, on peut lui donner celle d'une TextBox.
et redimensionner la ListViex2 suivant le nombre d'items qu'elle contient ou non.

Pour ce qui est de la facilité d'utilisation:
Vu que j'y arrive avec mon petit niveau, je pense qu'il en sera de même pour les autres.

Et comme tu le dis: Il y a bien plus d'options offertes.

Amicalement.

Yann
 

Pièces jointes

  • TXB_LV.xls
    38.5 KB · Affichages: 109

Lii

XLDnaute Impliqué
Re : listbox multiselection filtrer

Bon soir,

Un exemple avec 2 listes "Box".
Un autre avec 2listes "View".
 

Pièces jointes

  • ListBoxesLiées.zip
    8.3 KB · Affichages: 77
  • ListViewLiées.zip
    8.9 KB · Affichages: 80
Dernière édition:

roro69

XLDnaute Impliqué
Re : listbox multiselection filtrer

Re
Merci pour ton exemple
pourquoi lorsqu'on cliques dans la listview1 ce sont les même données qui vont dans listview2
Mais c'est vraiment ce que je voudrais si on pouvait régler le problème de récupération dans la listview2
A++
 

roro69

XLDnaute Impliqué
Re : listbox multiselection filtrer

Bonsoir lii merci pour ton exemple
C'est pas loin de ce que je veux ; juste une chose mois dans ma colonne A mes catégories sont répétées plusieurs fois donc je charge ma listbox1 SANS DOUBLONS
et quand je séléctionnes donc je fais :
Set rgnu = Feuil16.Range("A7", Feuil16.Range("A65536").End(xlUp))

With ListBox2
.Clear
For Each cel In rgnu
If cel = ListBox1 Then
.AddItem cel.Offset(0, 1)

End If
Next cel
If .ListCount > 0 Then .ListIndex = 0
End With
donc à chaque fois dans ma listbox2 je récupère X items ; et là je voudrais sélectionner plusieurs catécorie et récupérer tout les items liés
A++
Merci
 

YANN-56

XLDnaute Barbatruc
Re : listbox multiselection filtrer

Ce n'est qu'un test!

Mais dans la ListView 2 l'on peut mettre,
par exemple: les données d'une colonne (x) autre que A ou B
et même d'un autre classeur.

Il y a initialement à savoir incrémenter les SubItems de la ListView1

Si tu peux joindre un fichier avec ta base de données
(Ou quelque chose qui y ressemble) ce sera plus facile
pour t'aider.

A quand tu le voudras.

Yann
 

JNP

XLDnaute Barbatruc
Re : listbox multiselection filtrer

Re :),
Dans ta ListBox, change la propriété Multiselect en 1 - fmMultiSelectMulti, mais c'est ce que j'avais fait dans mon précédent post, en précisant comment récupérer les valeurs sélectionnées :confused:...
Bonne soirée :cool:
Ajout : Bonsoir Jacques
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : listbox multiselection filtrer

Bonsoir,

Voir PJ

Code:
Dim f
Private Sub UserForm_Initialize()
 Set f = Sheets("stype")
 Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))
    If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  Me.ListBoxType.List = MonDico.items
End Sub

Private Sub ListBoxType_Change()
   Me.ListBoxSType.Clear
   For i = 0 To Me.ListBoxType.ListCount - 1
    If Me.ListBoxType.Selected(i) = True Then
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If c = Me.ListBoxType.List(i) Then Me.ListBoxSType.AddItem c.Offset(, 1)
      Next c
    End If
   Next i
End Sub

JB
 

Pièces jointes

  • Copie de Multi1.xls
    35.5 KB · Affichages: 143
Dernière édition:

Discussions similaires

Réponses
4
Affichages
231
Réponses
17
Affichages
905
Réponses
2
Affichages
171

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 695
dernier inscrit
acimi