Recherche dans une listbox depuis une textbox sous condtion [Résolu]

Signaler
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020
-
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020
-
Bonjour à tous,

J'ai ce bout de code qui me permet de faire une recherche depuis un textbox dans une listbox.

Sub IndexSuivant(Debut)

Dim i As Integer
Dim intPosition As Integer

'choix de la colonne de recherche    
    If OptionButton1.Value = True Then
        j = 0
        Else
        j = 1
    End If
    
    For i = Debut To Me.ListBox1.ListCount - 1
        If InStr(LCase(Me.ListBox1.Column(j, i)), LCase(Me.TextBox1.Text)) = 1 Then
            intPosition = i
            ListBox1.ListIndex = i
            Lindex = i + 1 'la prochaine recherche commencera ? i + 1
        Exit For
        End If
    Next i
    
End Sub


J'aimerais pouvoir ajouter une condition selon la valeur d'une checkbox.
Cette valeur permettrait de savoir comment effectuer la recherche. Si faux, la recherche se fait sur la totalité des fournisseurs (comme c'est déjà le cas), si vrai la recherche se fait que sur les fournisseurs dont le nom est composé d'un "/".

Autre alternative qui me vient au moment où j'écris ces mots. Au fur et à mesure de la saisie dans le textbox, la listbox se vide, comme un filtre et réduit les choix possibles.

Par avance merci pour votre aide et bonne journée.

Ludwig

5 réponses

Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021
1 460
Bonjour,

La variable Debut vient d'ou ?

Feuille ou UserForm?

Pouvez mettre un fichier exemple car cote listbox ,d'apres vote code, la recherche se fait sur colonne differente suivant l'optionbouton
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021
1 460
Bonjour,

Je fais une recherche sur deux colonnes
Dans votre feuille Excel, les fournisseurs avec/sans "/" sont sur combien de colonnes?
Vu que vous ne donnez pas comment est rempli la listbox
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020

Bonjour,

Sur Ecxel, les fournisseurs sont sur une seule colonne.

Private Sub UserForm_Initialize()
NomFeuille = ActiveSheet.Name
DerLigne = Sheets(NomFeuille).Cells(Rows.Count, 1).End(xlUp).Row
DerCol = Sheets(NomFeuille).Cells(1, Columns.Count).End(xlToLeft).Column

Me.ListBox1.List = Range(Cells(1, 1), Cells(DerLigne, DerCol)).Value

End Sub


Bon dimanche !

Ludwig
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021
1 460 >
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020

Bonjour,

Ok, je regarde la chose
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021
1 460
Bonjour,

Fichier pour recherche specifique en fonction d'une TextBox pour remplissage ListBox.
La recherche filtrant les noms ayant un "/"

A adapter pour votre fichier perso: https://mon-partage.fr/f/vUbJganP/

Pige pas le Ucase car les noms doivent etre en Majuscule dans les cellules!
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020

Bonsoir,

C'est génial ça fonction super bien.

Le Ucase me permet de forcer l'écriture en majuscule dans le textbox.
Car, normalement, les fournisseurs sont toujours en majuscule dans ma liste. Mais, si il y en a un en minuscule je suis cuit. L'idéal dans ce cas serait une recherche sans tenir compte de la casse.

Encore merci pour ton aide. C'est génial !

Bonne soirée.

Ludwig
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021
1 460 >
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020

Bonjour,

sans tenir compte de la casse.
C'est faisable sans problème
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020
>
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021

Bonjour,

Je ne doute pas que ça doit être un jeu d’enfant pour toi.
J’ai ajouté application.proper au additem de la listbox. Les majuscules rendaient la listbox illisible.

Encore merci pour tout ce que tu as fait.

Bonne journée

Ludwig
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021
1 460 >
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020

Re,

Donc pas de suite, ca vous va comme ca?
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020
>
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021

Aucun problème !!!

Encore merci !!!
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020

Bonjour,

Private Sub TextBox1_change()
TextBox1.Text = UCase(TextBox1.Text)
Lindex = 0
IndexSuivant (Lindex)
End Sub


Lors de cet évènement.

Les items de la listbox viennent, quant à eux, d'une feuille excel.
Messages postés
15610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2021
1 460
Re,

Tout a fait Thierry.
Mais, pourquoi deux colonnes pour le recherche dans la ListBox?
D'ou vient la variable Debut:
Sub IndexSuivant(Debut)

Pour Info, faire la recherche sur le feuille excel plutot que la listbox
Messages postés
50
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
6 décembre 2020

Bonjour,

Merci pour ta réponse.

Je fais une recherche sur deux colonnes car je ne sais comment faire autrement. ;)

Le code mentionné plus haut et un code récupéré.

J'utilise un userform pour renseigner différents champs. J'avais besoin de lister les fournisseurs. Je l'ai donc fait à travers une listbox. J'ai ajouté un textbox pour l'utiliser comme un "moteur de recherche" dans mes fournisseurs, soit par le nom, soit par leur code. Une fois le fournisseur sélectionné, j'incrémente une deuxième liste avec ma sélection ou mes sélections.
Le hic avec "mon" code est qu'il me donne la première valeur trouvée et les fournisseurs sont en doublon : fournisseur (fournisseur générique) et fournisseur/code (nos fournisseurs). J'aimerais avoir la possibilité de faire la recherche que dans les fournisseurs avec un "/".

J'espère que cette fois-ci je n'ai pas répondu à côté de la plaque.

Encore merci et bonne journée.

Ludwig