[Déplacé .Net --> VBA] listbox

Résolu
kilucru974 Messages postés 6 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 1 novembre 2009 - 31 oct. 2009 à 07:43
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 - 1 nov. 2009 à 11:06
Bonjour,
je coince sur un problème dont la sloution doit être sous mon nez, mais enfin ...
j'ai un tableau sur excel que j'ai nommé Tableau et qui est la RowSource pour ListBox1.
Ce tableau posséde 7 colonnes maios je n'en affiche que 2 dans ListBox1.
sur ma userform j'ai mis un bouton commandbutton1, j'ai aussi mis une list box ListBox2 qui elle contient les 7 colonnes.
dans Tableau j'ai plusieurs fois la même réf en colonne 1, je voudrais afficher dans ListBox2 toutes les lignes de Tableau ayant la référence sélectionnée sur ListBox1, ci-*dessous le code qui ne me permet d'aficher que la ligne sélectionnée (mais pas les autres lignes de la même réf.)
Que manque t'il à mon code pour voir sur ListBox2 toutes les lignes de la référence sélectionnée ?

[i]Private Sub CommandButton1_Click()
Dim ligne_Prestation(0 To 6) As Variant
If Me.ListBox1.ListIndex = -1 Then Exit Sub
ligne_Prestation(0) = Me.ListBox1.List(, 0)
ligne_Prestation(1) = Me.ListBox1.List(, 1)
ligne_Prestation(2) = Me.ListBox1.List(, 2)
ligne_Prestation(3) = Me.ListBox1.List(, 3)
ligne_Prestation(4) = Me.ListBox1.List(, 4)
ligne_Prestation(5) = Me.ListBox1.List(, 5)
ligne_Prestation(6) = Me.ListBox1.List(, 6)
Me.ListBox2.AddItem
For i = 0 To 6
ListBox2.List(ListBox2.ListCount - 1, i) = ligne_Prestation(i)
Next i
End Sub/i

D'avance merci.

6 réponses

dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
31 oct. 2009 à 13:25
Re,
Ok ,
Il faut faire un autre programme.
Le mieux lorsque tu cliques par exemple sur
"A" , c'est de re-scrupter directement ton
tableau ligne par ligne de la colonne 1 et d'inserer au fur et à mesures des lignes trouvées avec "A" dans le listbox2.
Pour se faire ,
on peut utiliser l'instruction "find" par exemple.
A++
3
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
1 nov. 2009 à 11:06
Bonjour ,
C'est aussi une solution valable.
Pour des grands tableaux , je préfère utiliser
la methode "find".Plus rapide !
J'évite aussi d'utiliser "activate".
Au lieu d'écrire:
Range("b2:b" & Range("b2").End(xlDown).Row
Je taperai plutôt:
Feuil1.Range("b2:b" & Range("b2").End (xlDown).Row
A chacun ça façon !
A**
3
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
31 oct. 2009 à 12:54
Bonjour ,
Ton progamme fonctionne seulement si tu as
chargé (avec Rowsource) les 7 colonnes du tableau dans le listbox1.
Puis masquer les 5 dernières colonnes avec le
texte suivant:
Me.ListBox1.ColumnWidths = "30;30;0;0;0;0;0;0"

A++
0
kilucru974 Messages postés 6 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 1 novembre 2009
31 oct. 2009 à 13:08
Salut,
je ne cherche pas à afficher les 7 colonnes sur ListBox1 mais à récupérer toutes les lignes ayant la référence de la listindex de la ListBox1 sur la listbox2
et pour l'instant seule s'affiche la ligne sélectionnée alors que par exemple j'ai 5 lignes avec "A" en ListBox1.ListIndex et lorsuqe je valide "A" sur ListBox1 le click ne m'affiche qu'une seule ligne "A"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilucru974 Messages postés 6 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 1 novembre 2009
31 oct. 2009 à 13:53
Je pensais bien à quelque chose dans ce genre mais peux-tu m'envoyer un bout de code sachant que m aplage s'apelle Tableau et que la colonne concernée est la 1ére
D'avance merci
0
kilucru974 Messages postés 6 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 1 novembre 2009
1 nov. 2009 à 05:08
Salut,
j'ai trouvé une solution (peut-être pas la meilleure mais elle fonctionne !
voici le code complet :

[i]Private Sub CommandButton1_Click()
Dim ligne_Prestation(0 To 6) As Variant
If Me.ListBox1.ListIndex = -1 Then Exit Sub
[b]Worksheets("Feuil1").Activate
Dim I As Long
Dim j As Integer
Dim Plage As Range
Set Plage = Range("b2:b" & Range("b2").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Text = Me.ListBox1.Value Then/b
ligne_Prestation(0) = Me.ListBox1.List(, 0)
ligne_Prestation(1) = Me.ListBox1.List(, 1)
ligne_Prestation(2) = Me.ListBox1.List(, 2)
ligne_Prestation(3) = Me.ListBox1.List(, 3)
ligne_Prestation(4) = Me.ListBox1.List(, 4)
ligne_Prestation(5) = Me.ListBox1.List(, 5)
ligne_Prestation(6) = Me.ListBox1.List(, 6)
Me.ListBox2.AddItem
For j = 0 To 6
ListBox2.List(ListBox2.ListCount - 1, j) = ligne_Prestation(j)
Next j
End If
Next
End Sub
/i

avec ce bout de code j'obtient le résultat escompté, le petit hic est que ça n'empêche pas la sélection d'un autrte index mais en utlisant la propriété visible=false sur ListBox1 après le click le problème est évité.
a + et merci
0
Rejoignez-nous