List Box VBA

Bonsoir,

Avez vous une idée pour ce code

La ligne non commentée [UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 10) = Cells(x, 11)

M'indique une erreur 380 impossible de définir la propriété List je n'arrive pas à trouver pourquoi

En petit bonus :

Comment récupérer une valeur saisie dans une textbox à la place de S1 ?

Private Sub CommandButton1_Click()
   'Décalaration des variables
    Dim Critere
    Dim DerniereLigne As Integer, x As Integer
    lstRegion.Clear
    'Affectation des variables
    Critere = Range("S1")
    'TextBox1.Text = Critere
    'On récupère la dernière ligne de la source de données
    If Cells(Rows.Count, 1).End(xlUp).Row = 1 Then
        DerniereLigne = 2
    Else
        DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
    End If
    lstRegion.ColumnWidths = "60;200;25;25;25;25;75;0;0;0;100"
    'On parcours la source de données de la ligne à la dernière ligne
    For x = 1 To DerniereLigne
        'On teste le critère, ici le contenu de S1 avec la source de données.
        If Cells(x, 1) = Critere Then
            'On ecrit dans la listbox
            UserForm1.lstRegion.AddItem Cells(x, 1)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 1) = Cells(x, 2)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 2) = Cells(x, 3)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 3) = Cells(x, 4)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 4) = Cells(x, 5)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 5) = Cells(x, 6)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 6) = Cells(x, 7)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 7) = Cells(x, 8)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 8) = Cells(x, 9)
            UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 9) = Cells(x, 10)
            'UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 10) = Cells(x, 11)
        End If
    Next x
End Sub

En vous remerciant par avance pour votre aide

Bonjour,

sans fichier difficile de répondre.

UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, x)

au lieu de mettre x de 1 à 10, essaie de mettre de 0 à 9

bonjour,

'UserForm1.lstRegion.List(UserForm1.lstRegion.ListCount - 1, 10) = Cells(x, 11)

C'est une limitation connue du remplissage d'une Listbox par la propriété List. L'index de colonne ne peut pas aller au delà de 10.

La seule solution, c'est de passer par un Array ou un Dictionary intermédaire et de charger avec, la Listbox globalement avec un .List

ci-dessous exemple

Private Sub CommandButton1_Click()

   'Déclaration des variables
    Dim Critere
    Dim DerniereLigne As Integer, x As Integer
    Dim dico_régions As Object

    lstRegion.Clear
    'Affectation des variables
    Critere = Range("S1")
    'TextBox1.Text = Critere
    'On récupère la dernière ligne de la source de données
    If Cells(Rows.Count, 1).End(xlUp).Row = 1 Then
        DerniereLigne = 2
    Else
        DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
    End If
    lstRegion.ColumnWidths = "60;200;25;25;25;25;75;0;0;0;100"

    'On parcourt la source de données de la ligne 1 à la dernière ligne
    Set dico_régions = CreateObject("Scripting.dictionary")
    For x = 1 To DerniereLigne
        'On teste le critère, ici le contenu de S1 avec la source de données.
        If Cells(x, 1) = Critere Then
            'On ecrit dans le dictionnaire régions
            dico_régions(x) = Array(Cells(x, 1), Cells(x, 2), Cells(x, 3), Cells(x, 4), Cells(x, 5), Cells(x, 6), Cells(x, 7), Cells(x, 8), Cells(x, 9), Cells(x, 10), Cells(x, 11))
        End If
    Next x

    'on charge la listbox
    If dico_régions.Count = 1 Then UserForm1.lstRegion.Column = Application.Transpose(Application.Transpose(dico_régions.items))
    If dico_régions.Count > 1 Then UserForm1.lstRegion.List = Application.Transpose(Application.Transpose(dico_régions.items))

End Sub
Rechercher des sujets similaires à "list box vba"