Rechercher avec un ou plusieurs mots clés [Résolu]

Signaler
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
8 mai 2017
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour,

j' ai une liste qui contient des fournitures

exemple :

Cahier petit carreau
crayon
régle
ciseau
cahier spirale

un textbox + un bouton pour effectuer la recherche

Je voudrais que lorsque je saisie  " cahier " dans mon textbox et que je clique sur mon bouton,
dans la liste, il ne s affiche que :

cahier petit carreau
cahier spirale

J' ai essayé un code que j' ai trouvé où on surligne le mot correspondant mais cela ne convient pas, je pense que le principe est le même mais je n y arrive pas.

Merci par avance pour votre aide

 

Fripouil

11 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
re,

Salut Mortalino,

voici en (VB6)

Private Sub Command1_Click()


Dim iBoucle As Integer
Dim sItems As String


For iBoucle = 0 To List1.ListCount - 1


    sItems = List1.List(iBoucle)
   
    If InStrRev(sItems, "cahier") Then MsgBox List1.List(iBoucle)
   
Next iBoucle


End Sub

"cahier" correpond à ton TextBox, tu peux le faire sans la var : sItems


A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Je pense que dans ton cas une boucle sur ta list + l'utilisation de InstrRev et voir Mid$ et Right$, devrait répondre à ta demande...

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
8 mai 2017

euh tu n aurais pas un petit exemple que je puisses transformer car je vois pas bien ce que tu veux dire

merci encore

Fripouil
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,
(salut Exploreur)

Je connais rien au dot Net, mais pourquoi ne pas (à l'évènement Click du bouton) lire chaque Item à l'aide d'une boucle, et quand il n'y a pas le terme indiqué dans le TextBox DANS l'item en cours, tu fais un Remove de celui-ci ?
Il ne restera que ceux ayant le mot-clé recherché

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
ce qui donne :

If InStrRev(List1.List(iBoucle), "cahier") Then MsgBox List1.List(iBoucle)

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
pourquoi InStrRev ?

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
ben....c'est ma façon de voir la chose(qui n'est pas toujours la meilleur....)

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
j'suis toujours en apprentissage....lol...

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
No soucy  ;)
Autant partir du début, c'est plus simple.

Bien que je n'y connaisse rien, j'essaie de lui faire, mais galère ce dot net

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Je comprends maintenant pourquoi je ne me mets pas au dot net..
Ce fichu RemoveAtm'a fait galéré..

Bef,
ouvre un nouveau projet (pour tester, mais ca fonctionne), place une listbox, un textbox et un bouton :

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
MyBase.Load
        With Me.ListBox1
            .Items.Add("Cahiers petit
carreaux")
            .Items.Add("stylos")
            .Items.Add("Marqueurs")
            .Items.Add("Feuilles A4")
            .Items.Add("Cahiers grand
carreaux")
            .Items.Add("Trouilloteuse")
        End With
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
Button1.Click
        Dim i As Long

        For i = Me.ListBox1.Items.Count - 1
To 0 Step -1
            If InStr(LCase(Me.ListBox1.Items.Item(i).ToString), LCase(Me.TextBox1.Text.ToString)) =
0 Then Me.ListBox1.Items.RemoveAt(i)
        Next
    End Sub
End Class
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
outch moitié vb moitié vb.net.....

à vérifier
dans ce but contexte :
instr => chaine.contains
lcase => chaine.tolower

next? next I ^^

et on peut déclarer en même temps que l'utilisation, ce qui donne :

<strike>Dim i As Long</strike>
For i As Long = Me.ListBox1.Items.Count -
1 To 0 Step -1

mieux vaut décocher les références à VB6 pour se forcer à prendre le pli....
plus de left mid etc...
<hr width="100%" size="2" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp