Pb : Découpe des mots saisis dans un TextBox afin d'effectuer une recherche sur

Kenokuto - 13 déc. 2001 à 16:57
 Isoat - 15 déc. 2001 à 20:38
Voila.
g un Pb. je dois développer un moteur de recherche pour ma société mais il me manque un élément.

Si je saisi "Elingue" dans mon TextBox, grâce à la fonction Instr() j'arrive à récupérer tous les enregistrements contenant le mot "Elingue". Mais si je tape "Joint Elingue" la fonction InStr() va rechercher la chaine complete or j'aimerais que la chaine "Joint Elingue" Soit découpé en "Joint" et "Elingue" afin de faire la recherche sur les deux mots et de pouvoir afficher tous les résultats.

Si quelqun connait une fonction pour cela je suis preneur.
Merci d'avance

3 réponses

Thrakkazz2000
13 déc. 2001 à 17:37
dans ce cas découpe ta chaine en sous chaine ;)
sérieux
en gros
chainetotale = chaine1 + " " + chaine2

instr(chainetotale, " ") va te donner la position de ton premier espace.
tout ce qu'il y a avant c'est ta chaine1, tout ce qu'il y a après c'est ta chaine2
connaissant donc la position du premier espace, tu peux donc trouver ta chaine1, ensuite tu fais la même chose mais avec instr ayant le paramètre lui indiquant de commencer APRES le premier espace (comme ça tu sais si il y a en a un autre...)
ex instr(7, chainetotale, " ")

boucle jusqu'à ce que tu ne trouves plus d'espace...

pour info avec instr, left, right, mid, len, tu devrais pouvoir faire tout ce que tu veux sur une chaine de caractère
a+
fabien
0
Voici la fonction si tu veux !!! ;o)
Bon elle est de moi et elle marche parfaitement.
Allez hop, bonne prog !!!
ps : si qqun a + simple et + rapide, je suis preneur !!! merci d'avance... ;oà

'Retourne le nieme mot dans une phrase
'Si le n° = 0 alors retourne le nombre de mot total
Public Function Mot(TxT As String, nb As Double) As String
Dim tmp As String
Dim tmpNb As Integer

For i = 1 To Len(TxT)
If Mid(TxT, i, 1) <> " " Then If tmp "" Then tmpNb tmpNb + 1
tmp = tmp + Mid(TxT, i, 1)
Else
If tmp <> "" Then
If nb = tmpNb Then
Mot = tmp
Exit Function
End If
tmp = ""
End If
End If
Next i If tmp <> "" And nb tmpNb Then Mot tmp If nb 0 Then Mot str(tmpNb)
End Function
0
Je pense qu'il y aplus simple, avec un Split(string, " ") qui retourne un tableau de tous les mots.

D'ailleurs ya une source ici, qui montre ca.
Qui transforme les doubles espace en espace simple, au cas ou.
Puis split le texte grace à " ", voili voilou.
Je te donnepas tout cuit la, dsl, mais suffit de charcher un peu, ici meme, tu vs trouver.
0
Rejoignez-nous