Rechercher texte en sens inverse

Résolu
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006
- 3 août 2004 à 21:00
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006
- 5 août 2004 à 18:02
Salut !

En fait, je souhaiterai pouvoir rechercher du texte ds 1 textbox, mais non pas de gauche à droite, mais en sens contraire (de droite à gauche).

Voici le code pour la recherche avec "texte" le textbox et "text1" le texte à rechercher :

Private Sub Rechercher_Click()

'Recherche si ce qui est écrit dans Text1 existe dans le texte
Position =texte.SelStart +texte.SelLength + 1
Found = InStr(Position, texte, Text1)

'Si le mot est trouvé...
If Found <> 0 Then
'Donne le focus au texte
texte.SetFocus
'Sélectionne le texte
texte.SelStart = Found - 1
texte.SelLength = Len(Text1)
Else
MsgBox "Impossible de trouver " & Chr(34) & Text1 & Chr(34), vbInformation + vbOKOnly, "Rechercher texte"
End If

End Sub

Merci d'avance ! 8-)

13 réponses

cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

3 août 2004 à 21:09
essais la fonction "InstrRev"

Bonne prog, poele_a_frire@hotmail.com
liquide
3
vlad2i
Messages postés
285
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
13 février 2005

3 août 2004 à 21:42
La fonction InStrRev s'utilise comme InStr boy :)

Elles te renvoies la position de la chaine trouvée (1 = première lettre)

Exemple :

A = "ABCABCABChelloABC"
PremierC = InStr(1,A,"C")
'Renvoie la position du premier C
DernierC = InstrRev(A,"B")
'Renvoie la position du dernier B

J'espère que c'est assez clair, sinon demande plus d'informations, n'hésite pas :)
3
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

4 août 2004 à 22:34
tu as lu l'aide MSDN sur VB?

regarde comment déclarer la fonction InstrRev, je ne suis pas sur
que le selstart soit bien aproprié ou bien placé dans la fct.

voila ce que donne msdn : InstrRev(string1, string2[, start[, compare]])

string1 l'expression dans laquelle rechercher
string2 l'expression a rechercher
start le point de départ de la recherche
compare est une option facultative

pour toi selstart correspont au string1, ce qui est l'expression dans laquelle chercher. Hors selstart est un "point de départ" et non une chaine de caracteres.

Bonne prog, poele_a_frire@hotmail.com
liquide
3
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006

3 août 2004 à 21:25
Merci liquide pour ton aide mais je ne sais pas comment utiliser cette fonction.

Si quelqu'un saurai le faire...

Merci d'avance 8-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006

3 août 2004 à 21:38
Est-ce que ça marche avec "Step -1" ?

Moi je n'y parviens pas.
0
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006

3 août 2004 à 22:04
Si je comprend bien, ce qui suit doit être correct :

Texte = "hello tout le monde !!!"
Chercher = "monde"

Sub Rechercher_Click()

'Récupère la position du 1er caractère de la chaîne "Chercher"
Position = InstrRev(Texte, Chercher)

End Sub

Comment on sélectionne le texte trouvé ?

Merci encore 8-)
0
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

3 août 2004 à 22:08
et :
texte.SelStart = Position
texte.SelLength = Len(position)

ca sert a le selectionner

Bonne prog, poele_a_frire@hotmail.com
liquide
0
vlad2i
Messages postés
285
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
13 février 2005

3 août 2004 à 22:10
Et je crains que tu n'aies pas comprendu :) ou alors ton résumé et pas clair

InStrRev ne renvoie pas la 1ere mais la dernière occurence, et non pa sdu caractère, mais de la chaine que tu recherche, pfff :)

et pour corriger la pouale :

texte.SelStart = Position
texte.SelLength = Len(TexteAChercher)
0
cs_liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

3 août 2004 à 22:14
ouais dsl j'ai merdé

Bonne prog, poele_a_frire@hotmail.com
liquide
0
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006

3 août 2004 à 22:32
C'est pas grave, je faisais quelques essais !

Juste un dernier petit truc ;) Voici mon code :

Private Sub Rechercher_Click()

'Récupère la position du 1er caractère de la chaîne "Chercher"
Position = InStrRev(Texte, Chercher)

'Donne le focus au Textbox
Texte.SetFocus

'Sélectionne le résultat
Texte.SelStart = Position - 1
Texte.SelLength = Len(Chercher)

End Sub

Je souhaiterai juste débuter la rechercher à partir du positionnement du curseur dans le textbox, par exemple avec les données ci-dessous, si j'ai sélectionné auparavant "monde", eh bien qu'il me sélectionne le "e" du mot "le" et non pas du mot "monde". Voilà, j'espère que c'est assez clair. :)

Texte = "hello tout le monde !!!"
Chercher = "e"

Merci d'avance !!! 8-)
0
vlad2i
Messages postés
285
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
13 février 2005

3 août 2004 à 22:36
Si tu veux faire ca, il faut que ton textbox ait le focus, et tu utilise

Position = InStrRev(Text1.SelStart,Texte,Recherche)

Mais attention, je le dis au passage, ton code mettra un message d'erreur si la recherche est égale à "" ou si il ne trouve pas...
0
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006

4 août 2004 à 21:35
Salut !

J'ai essayé mais chez-moi ça ne marche pas ("Erreur 13 - Type mismatch") :

Private Sub Rechercher_Click()

'Donne le focus au Textbox
Texte.SetFocus

'Récupère la position du 1er caractère de la chaîne "Chercher"
Position = InStrRev(Texte.SelStart, Texte, Chercher)

'Sélectionne le résultat
Texte.SelStart = Position - 1
Texte.SelLength = Len(Chercher)

End Sub

Décidément, je vous donne du boulot en ce moment ;)
0
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
18 février 2006

5 août 2004 à 18:02
Super, ça marche impec !!!

Merci et bonne continuation

PS: En fait, je n'ai pas msdn car il me manque le cd pour l'installation donc je dois faire sans.

Merci encore 8-)
0