Ouvrir un userform a partir d'une listbox

Bonjour j'essaie avec beaucoup de difficultés de régler mon probléme . Pour l'instant j'ai deux boutons de commande un pour ajouter un vin dans ma liste de vin avec différentes infos. un second qui me permet de faire une recherche . dans la textbox recherche j'inscrit le nom du vin ( par savigny les beaune ) dans la list box s'affiche le nom du vin . lorsque je clique sur ce vin , je voudrais alimenter le tableau dessous.

J'avais fait une demande sur un forum et une personne m'avait donne une solution qui marchait bien mais avec 10 colonnes dans mon tableau liste_vin or moi j'en ai un peu plus

merci à la personne qui pourra me venir en aide

Cordialement philippe

20list-box-essai.xlsm (74.34 Ko)

Bonjour,

La méthode "AddItem" est limitée à 10 colonnes dans une listbox ...

Pour avoir plus de 10 colonnes > l'on peut utiliser une variable tableau ...

Private Sub TXTnom_Change()

    ' déclaration des variables
Dim I As Long                       ' parcourt les lignes du tableau
Dim C As Byte
Dim Tb1()

    ' Reporter module  Dim nbligne As Long                 ' calcul le nbre de ligne
    nbligne = Application.WorksheetFunction.CountA(Feuil1.Range("plageNomclient"))
    With Me
        .TxtAppellation = ""
        .TxtCouleur = ""
        .TxtQuantite = ""
        .TxtRegion = ""
        .TxtRangement = ""

        .TxtContenance = ""
        .TxtDomaine = ""
        .TxtTelephone = ""
        .TxtAdresse = ""
        .TxtMail = ""
        .TxtInternet = ""

        .TextBox5 = ""
        .TextBox4 = ""
        .TextBox3 = ""
        .TextBox2 = ""
        .TextBox1 = ""

        With .LSTnom
            .Clear
            'affectation des variables
            If Me.TXTnom = "" Then Exit Sub    ' on teste si la textbox a bienete saisie

            ' on boucle toutes les valeurs de la plage des noms
            For I = 1 To nbligne
                ' on teste que la valeur de la cellule est identique au contenue de la textbox
                If Feuil1.Cells(I + 9, 1) Like "*" & Me.TXTnom & "*" Then

                    ' ajouter la plage dans une variable tableau
                    Tb1 = Feuil1.Range(Feuil1.Cells(I + 9, "A"), Feuil1.Cells(I + 9, "Q"))

                    ' ajouter les valeurs dans la listbox
                    .List = Tb1()
                End If
            Next I

            ' on ajoute le nbre de la valeur dans la liste
            Me.TXTnbe = .ListCount
        End With
    End With
End Sub

ric

merci pour la response ca a l'air de fonctionner j'ai bien toutes les infos qui sont reprises dans le tableau. par contre dans la recherche si j'entre un g (comme Gevrey ou SaviGny les beaune) dans la listebox n'apparait pas les tous les noms de vin avec un G.

Bonjour,

Désolé pour mon inattention ...

Private Sub TXTnom_Change()

    ' déclaration des variables
Dim I As Long   ' parcourt les lignes du tableau
Dim Nb As Long  ' compte le nombre d'item
Dim C As Byte, X As Integer, Y As Byte, Z As Byte
Dim Tb1

    ' Reporter module  Dim nbligne As Long                 ' calcul le nbre de ligne
    nbligne = Application.WorksheetFunction.CountA(Feuil1.Range("plageNomclient"))
    With Me
        .TxtAppellation = ""
        .TxtCouleur = ""
        .TxtQuantite = ""
        .TxtRegion = ""
        .TxtRangement = ""

        .TxtContenance = ""
        .TxtDomaine = ""
        .TxtTelephone = ""
        .TxtAdresse = ""
        .TxtMail = ""
        .TxtInternet = ""

        .TextBox5 = ""
        .TextBox4 = ""
        .TextBox3 = ""
        .TextBox2 = ""
        .TextBox1 = ""

        With .LSTnom
            .Clear
            'affectation des variables
            If Me.TXTnom = "" Then Exit Sub    ' on teste si la textbox a bienete saisie
            Nb = 0
            X = 1

            ' boucler les valeurs de la plage des noms correspondant aux critères
            For I = 1 To nbligne
                ' on teste que la valeur de la cellule est identique au contenue de la textbox
                If Feuil1.Cells(I + 9, 1) Like "*" & Me.TXTnom & "*" Then Nb = Nb + 1
            Next I

            ReDim Tb1(1 To Nb, 1 To 17)
            ' on boucle toutes les valeurs de la plage des noms
            For I = 1 To nbligne
                ' on teste que la valeur de la cellule est identique au contenue de la textbox
                If Feuil1.Cells(I + 9, 1) Like "*" & Me.TXTnom & "*" Then
                    ' ajouter la plage de la ligne dans une variable tableau
                    For Y = 1 To 16
                        Tb1(X, Y) = Feuil1.Cells(I + 9, Y)
                    Next Y
                    X = X + 1
                End If
            Next I
            .List = Tb1             ' < ajouter les valeurs dans la listbox

            Me.TXTnbe = .ListCount  ' < on ajoute le nbre de la valeur dans la liste

        End With
    End With
End Sub

ric

merci pour ton aide tout fonctionne comme je le souhaite

Bonjour toutes et tous

@Ric merci en tout cas ^^^, j'avais complétement zappé listbox limite à 10 et qu'il fallait ajouter une variable

tout fonctionne sry

Rechercher des sujets similaires à "ouvrir userform partir listbox"