Problème remplissage ListBox

Marjounette

XLDnaute Nouveau
Bonjour le forum,

Je souhaite combiner une ListBox avec un TabStrip de manière à obtenir plusieurs onglets qui me permettent d'afficher des données triées selon un critère de catégorie.

Cependant, je n'arrive pas à remplir la ListBox des ligne que je parcours dans une boucle FOR (voir code ci-dessous):
Code:
Select Case n
        Case 0 'Tous les coureurs
            UserForm1.ListBox1.Clear 'Efface la listBox1 et ré-écris tous les coureurs dedans
            Lecture_liste 'Execute la lecture de toute la page engagements
        Case 1 'Poussins
            temp = UserForm1.ListBox1.ListCount 'Garde en mémoire le nombre de coureur dans la liste
            UserForm1.ListBox1.Clear 'Efface la listBox1 et ré-écris les poussins dedans
                For i = 2 To temp
                    If (Sheets("Engagements").Cells(i, 5) = "Poussin") Then
                            UserForm1.ListBox1.List = .Range("A" & i&":F"&i).Value   '<--------------Je veux écrire la ligne i (de la colone A à la colonne F) 
                    End If
                Next i
End Select

Je sais que la synthaxe .Range("A" & i&":F"&i) est fausse. Même en écrivant simplement .Range("A" & i), j'ai un message d'erreur:
"Impossible de définir la propriété List. Index de table de propriétés non valide."

Quelqu'un peut-il m'aider?
Merci d'avance
 

Marjounette

XLDnaute Nouveau
Re : Problème remplissage ListBox

Voilà voilà ! ^^

Le problème est, lorsque tu clic sur l'onglet "Poussins", seul la 1ere colonne de la ListBox est remplie.
 

Pièces jointes

  • Prog.xlsm
    32.3 KB · Affichages: 37
  • Prog.xlsm
    32.3 KB · Affichages: 40
  • Prog.xlsm
    32.3 KB · Affichages: 39

xhudi69

XLDnaute Accro
Re : Problème remplissage ListBox

Bonjour Marjounette, le Forum,
Bonjour Staple1600 ;)

Il faudrait que tu commences par écrire d'une manière conventionnelle :p
Code:
Sub Onglets()
Dim n As Integer, i As Integer, Drl As Integer
n = UserForm1.TabStrip1.SelectedItem.Index 'Valeur de l'onglet du TabStrip1

With Sheets("Engagements")
    Drl = .Range("A65500").End(xlUp).Row
    Select Case n
        Case 0 'Tous les coureurs
            UserForm1.ListBox1.Clear 'Efface la listBox1
            Lecture_liste 'Execute la lecture de toute la page engagements
        Case 1 'Poussins
            UserForm1.ListBox1.Clear 'Efface la listBox1
            For i = 2 To Drl
                If .Cells(i, 5) = "Poussin" Then
                        UserForm1.ListBox1.AddItem .Range("A" & i).Value
                        UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 1) = .Range("B" & i).Value
                        UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 2) = .Range("C" & i).Value
                        UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 3) = .Range("D" & i).Value
                        UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 4) = .Range("E" & i).Value
                        UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 5) = .Range("F" & i).Value
                End If
            Next i
        Case 2
            UserForm1.ListBox1.Clear
        Case 3
            UserForm1.ListBox1.Clear
        Case 4
            UserForm1.ListBox1.Clear
        Case 5
            UserForm1.ListBox1.Clear
    End Select
End With
End Sub

A toi d'écrire la suite....:rolleyes:

@+ :cool:
 

xhudi69

XLDnaute Accro
Re : Problème remplissage ListBox

Bonjour Marjounette, le Forum,

Ou alors, c'est mieux avec .Cells(i ,1)
Code:
Sub Onglets()
Dim n As Integer, i As Integer, Drl As Integer
n = UserForm1.TabStrip1.SelectedItem.Index 'Valeur de l'onglet du TabStrip1

With Sheets("Engagements")
    Drl = .Range("A65500").End(xlUp).Row
    Select Case n
        Case 0 'Tous les coureurs
            UserForm1.ListBox1.Clear 'Efface la listBox1
            Lecture_liste 'Execute la lecture de toute la page engagements
        Case 1 'Poussins
            UserForm1.ListBox1.Clear 'Efface la listBox1
            For i = 2 To Drl
                If .Cells(i, 5) = "Poussin" Then
                    UserForm1.ListBox1.AddItem .Cells(i, 1).Value
                    UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 1) = .Cells(i, 2).Value
                    UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 2) = .Cells(i, 3).Value
                    UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 3) = .Cells(i, 4).Value
                    UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 4) = .Cells(i, 5).Value
                    UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 5) = .Cells(i, 6).Value
                End If
            Next i
        Case 2
            UserForm1.ListBox1.Clear
        Case 3
            UserForm1.ListBox1.Clear
        Case 4
            UserForm1.ListBox1.Clear
        Case 5
            UserForm1.ListBox1.Clear
    End Select
End With
End Sub

@+ :cool:
 

Marjounette

XLDnaute Nouveau
Re : Problème remplissage ListBox

Un grand merci xhudi69 !

C'est vrai que mon code n'est pas très bien écris, c'est la première fois que je met aux userform et vba en général. J'apprends sur le tas ! :p

Je voudrais tout de même savoir pourquoi
UserForm1.ListBox1.List(i, 1) = .Range ....etc ne fonctionnait pas ? i est un entier pourtant?
 

xhudi69

XLDnaute Accro
Re : Problème remplissage ListBox

Bonsoir Marjounette, le Forum,

Tu dois commencer à remplir ton ListBox1 par UserForm1.ListBox1.AddItem ........pour remplir la colonne 0 du ListBox.
puis ensuite comme décrit dans le code au post #5

@+ :cool:
 

xhudi69

XLDnaute Accro
Re : Problème remplissage ListBox

Bonjour Marjounette, le Forum,
Bonjour Staple1600 ;)

Suggestion en passant
Case 2,3,4,5
UserForm1.ListBox1.Clear
End Select
ou
Case 2 To 5
UserForm1.ListBox1.Clear
End Select

Oui bien sûr, par contraction, mais pour notre amie, j'ai précisé
Il faudrait que tu commences par écrire d'une manière conventionnelle

Puis laisser de la place entre les "Case" lui permet d'insérer ces procédures, isn't it :)

@+ :cool:
 

laetitia90

XLDnaute Barbatruc
Re : Problème remplissage ListBox

bonjour tous :):)
un seul user est suffisant a mon avis!!

pour modif doucle clik dans la listbox sur un item.... tu modifie & click bouton modifie

meme principe pour supp..& enreg...

attention pas trop mis de conditions il faut adapter
 

Pièces jointes

  • Prog (2).xlsm
    27.3 KB · Affichages: 50

Discussions similaires

Réponses
4
Affichages
165
Réponses
17
Affichages
760

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo