Rechercher texte en sens inverse [Résolu]

SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Dernière intervention
18 février 2006
- 3 août 2004 à 21:00 - Dernière réponse : SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
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-)
Afficher la suite 

13 réponses

Meilleure réponse
cs_liquide
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Dernière intervention
24 juin 2008
- 3 août 2004 à 21:09
3
Merci
essais la fonction "InstrRev"

Bonne prog, poele_a_frire@hotmail.com
liquide

Merci cs_liquide 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Meilleure réponse
vlad2i
Messages postés
285
Date d'inscription
mercredi 20 août 2003
Dernière intervention
13 février 2005
- 3 août 2004 à 21:42
3
Merci
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 :)

Merci vlad2i 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Meilleure réponse
cs_liquide
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Dernière intervention
24 juin 2008
- 4 août 2004 à 22:34
3
Merci
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

Merci cs_liquide 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Dernière intervention
18 février 2006
- 3 août 2004 à 21:25
0
Merci
Merci liquide pour ton aide mais je ne sais pas comment utiliser cette fonction.

Si quelqu'un saurai le faire...

Merci d'avance 8-)
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Dernière intervention
18 février 2006
- 3 août 2004 à 21:38
0
Merci
Est-ce que ça marche avec "Step -1" ?

Moi je n'y parviens pas.
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Dernière intervention
18 février 2006
- 3 août 2004 à 22:04
0
Merci
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-)
cs_liquide
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Dernière intervention
24 juin 2008
- 3 août 2004 à 22:08
0
Merci
et :
texte.SelStart = Position
texte.SelLength = Len(position)

ca sert a le selectionner

Bonne prog, poele_a_frire@hotmail.com
liquide
vlad2i
Messages postés
285
Date d'inscription
mercredi 20 août 2003
Dernière intervention
13 février 2005
- 3 août 2004 à 22:10
0
Merci
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)
cs_liquide
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Dernière intervention
24 juin 2008
- 3 août 2004 à 22:14
0
Merci
ouais dsl j'ai merdé

Bonne prog, poele_a_frire@hotmail.com
liquide
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Dernière intervention
18 février 2006
- 3 août 2004 à 22:32
0
Merci
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-)
vlad2i
Messages postés
285
Date d'inscription
mercredi 20 août 2003
Dernière intervention
13 février 2005
- 3 août 2004 à 22:36
0
Merci
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...
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Dernière intervention
18 février 2006
- 4 août 2004 à 21:35
0
Merci
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 ;)
SkyRocKo
Messages postés
174
Date d'inscription
samedi 10 mai 2003
Dernière intervention
18 février 2006
- 5 août 2004 à 18:02
0
Merci
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-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.