XL 2016 pb recherche intuitive dans textbox / listbox

RobyL

XLDnaute Junior
bonjour,

je n'arrive pas à créer une textbox avec une recherche intuitive d'une listbox.
cliquez sur le bouton de l'onglet "choix" pour ouvrir le formulaire.
merci d'avance pour votre aide.
 

Pièces jointes

  • essaie 11.xlsm
    503.4 KB · Affichages: 22

fanch55

XLDnaute Barbatruc
Salut, surement un doublon avec

Pourriez-vous mettre résolu sur ce post ?
 

patricktoulon

XLDnaute Barbatruc
re
tiens un exemple simplicime
le textbox recherche dans toutes les colonnes
j'ai une colonne(la dernière ) pour correspondance ligne sur feuille
la liste fait 1000 lignes
tu choisi la méthode en enlevant le "X" dans l'events

ps: j'oubliais
tu a deux sous méthodes "commence par" ou " contient" dans les deux méthodes

c'est beau la vie non ?
donc
soit
VB:
Private Sub TextBox1_Change()    'methode add item
    Dim i&
    ListBox1.Clear
    If TextBox1 = "" Then
        'bien que la boucle remet d'elle meme le tableau en entier si le textbox est vide
        'pas la peine de la faire mouliner
        ListBox1.List = tableau
    Else
        For i = 1 To UBound(tbl)
            'option de recherche
            'If tbl(i) Like "*|" & TextBox1.Value & "*|" Then    'on cherche dans tbl (option :COMMENCE PAR )
            If tbl(i) Like "|*" & TextBox1.Value & "*|" Then    'on cherche dans tbl (option:CONTIENT)

                With ListBox1: .AddItem: For c = 1 To UBound(tableau, 2): .List(.ListCount - 1, c - 1) = tableau(i, c): Next: End With
            End If
        Next
    End If
End Sub

soit
VB:
Private Sub TextBox1_Change()    'methode compose new tbl(tbl2)
    Dim tbl2(), a&, i&, ic&
    ListBox1.Clear
    If TextBox1 = "" Then
        'bien que la boucle remet d'elle meme le tableau en entier si le textbox est vide
        'pas la peine de la faire mouliner
        ListBox1.List = tableau
    Else
        For i = 1 To UBound(tbl)
            'option de recherche
            If tbl(i) Like "*|" & TextBox1.Value & "*|" Then    'on cherche dans tbl (option :COMMENCE PAR )
                'If tbl(i) Like "|*" & TextBox2.Value & "*|" Then    'on cherche dans tbl (option:CONTIENT)

                a = a + 1: ReDim Preserve tbl2(1 To UBound(tableau, 2), 1 To a)
                For ic = 1 To UBound(tbl2): tbl2(ic, a) = tableau(i, ic): Next
                ListBox1.Column = tbl2

                'With ListBox1: .AddItem: For c = 1 To UBound(tableau, 2): .List(.ListCount - 1, c - 1) = tableau(i, c): Next: End With
            End If
        Next
    End If
End Sub
et dans le activate
VB:
Private Sub UserForm_Activate()
    Dim i&

    tableau = Sheets(1).Range("A2:E" & Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim tbl(1 To UBound(tableau))
    ListBox1.List = tableau
    ListBox1.ColumnCount = UBound(tableau, 2)
    For i = 1 To UBound(tableau)
        tbl(i) = "|" & Join(Application.Index(tableau, i, 0), "|") & "|"     'on join la ligne du tableau dans la ligne i de tbl
        tableau(i, 5) = i + 1    'on ajoute le numero de ligne en derniere colonne
        DoEvents    'pour ne pas attendre la fin de concstruction de tbl pour l'affichage complet de la liste
    Next
End Sub

tu devrais pas avoir de mal a adapter

demo+fichier joint
demo6.gif


si ca c'est pas du rapido :D ;)
 

Pièces jointes

  • textbox recherche multicolonne.xlsm
    62.6 KB · Affichages: 92
Dernière édition:

filtre69

XLDnaute Occasionnel
Bonsoir a tous et au forum
patricktoulon je me suis permis de prendre votre fichier qui fonctionne trés bien, j'aurais une demande supplementaire si possible sur votre fichier pouvez-vous rajouter l'option clic.
je m'explique une fois la ligne trouver dans la listbox en cliquant dessus je voudrais aller dessus dans la feuille.
merci d'avance de votre gentillesse.
Cordialement
 

Statistiques des forums

Discussions
312 201
Messages
2 086 166
Membres
103 151
dernier inscrit
nassim