ListBox.ListIndex - Impossible de lire la propriété

Bonsoir tout le monde !

J'ai fait quelques lignes de codage pour que quand je Double_Click dans ma ListBox ça m'affiche des infos dans des TextBox.

J'aimerais savoir pourquoi quand je dépasse 9 ça me met un message d'erreur ???

Private Sub ListBox_recherche_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

With ListBox_recherche

TextBox_Email = ListBox_recherche.List(ListBox_recherche.ListIndex, 3)

TextBox_tel = ListBox_recherche.List(ListBox_recherche.ListIndex, 4)

TextBox_test = ListBox_recherche.List(ListBox_recherche.ListIndex, 9)

End With

End Sub

Merci pour vos réponses

47resshum-v004.xlsm (54.39 Ko)

Bonsoir,

pour remplir une liste box au delà de 9 colonnes (c'est à dire de 0 à 8) il faut passer par un tableau VBA... vous vous voulez utilisez la colonne 9 (donc la 10) donc elle n'existe pas ou ne peut être créée par ADD.

Vous remplissez le tableau VBA avec les différentes données, puis vous "remplissez" la listbox grâce à ce tableau.

L 'aide sur la propriété ColumCount dit ceci :

Pour une source de données indépendante, il y a une limite de 10 colonnes (0 à 9).

Source de données indépendante = introduction des données une à une via la méthode AddItem.

Pour éviter cette limitation, il faut d'abord introduire les données dans un tableau et ensuite transférer ce tableau dans la ListBox

@ bientôt

LouReeD

Ici un bout de code pour vous permettre de comprendre (enfin si l'erreur vient bien de là )

Dim tablo()

            ReDim tablo(Range("Tableau1").Rows.Count, 11) ' tableau à deux dimension Nb_de_ligne x Nb_de_colonne

            With Sheets("Tableau") ' avec la feuille tableau on va remplir les données du tableau tablo()
                j = 0
                For i = 0 To Range("Tableau1").Rows.Count - 1 ' ici on compte le nombre de ligne du tableau1 (plus de recherche de longueur)
                    If Not .Rows(i + 2).Hidden Then ' on teste à partir de la ligne 2 (première ligne de donnée) si elle est non cachée (visible, donc)
                        For ii = 0 To 10
                            tablo(j, ii) = Sheets("Tableau").Cells(i + 2, ii + 1)
                        Next ii
                        j = j + 1
                    End If
                Next i
            End With
            ' une fois le tableau tablo() remplit on le transfert dans la list box
            ListBox1.List = tablo

En espérant avoir été claire...

@ bientôt

LouReeD

Heu .... j'ai compris le début, mais j'ai pas compris comment utiliser ton code O_o

Si qqn pouvais jeter un coup d'oeil sur mon tableau, je me prends la tête avec depuis que j'ai posté ce message

Merci,

Bonjour

regardez votre code :

    Set Ws = Sheets("BD_ETATFILIA")
    With Me.ListBox_recherche
    .Clear
        For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
            If Ws.Range("A" & J) Like "*" & compagnie & "*" And _
                Ws.Range("B" & J) Like "*" & nom & "*" Then
            .AddItem Ws.Range("A" & J)
                For i = 1 To Ws.Range("A" & Rows.Count).End(xlUp).Row'Nb de colonne pour la recherche par double_click()
                .List(.ListCount - 1, i - 1) = Ws.Cells(J, i)
                Next i
            End If
        Next J
    End With

dans la boucle For i = 1 to "variable"

variable est égal au nombre de ligne du tableau, hors votre tableau a 6 lignes...

donc dans votre liste box pas de 9ième valeur... donc dans le Userform cela affiche "vide"...

il faudrait remplacer : ("A" & Rows.Count).End(xlUp).Row par l'équivalent en colonne :

("A" & Columns.Count).End(xlLeft).Column

A voir, toujours est-il que vous avez inscrit des valeurs en colonne BE, BF, BG etc...

Sachez une fois de plus que l'instruction Add Item des listbox ne supporte pas plus de 10 item soit de 0 à 9, pour aller au delà il faut passer par un tableau du style : tablo()=Range("A1:BK36")

puis de mettre ce tableau dans la liste box par

ListBox1.List = tablo

@ bientôt

LouReeD

Rechercher des sujets similaires à "listbox listindex impossible lire propriete"