Comment effectuer une recherche dans un text

touns1 - 27 mai 2001 à 22:54
MicProg Messages postés 14 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 30 juillet 2004 - 28 déc. 2003 à 10:22
comment faire pour faire une recherche dans un text comme lorsque l'on appuis sur Ctrl+F du navigateur
pa exemple je voudrais chercher le mot "voiture" sur cette page...
merci

4 réponses

Soit tu le programme toi-même avec la fonction "InStr" et les procédures de sélection ("SelStart", "SelLength", etc.) de mots ou t'emploie le control "RichText" qui prends pleins de truc en charge...
0
où trouver le controle RichText (je suis debutant)
0
c bon, j'ai trouvé, mais maintant, comment je fais pour faire une recherche d'un mot ?
0
MicProg Messages postés 14 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 30 juillet 2004
28 déc. 2003 à 10:22
Ny method :)
Function Searching()
Dim dep1, dep2
dep1 = TextZone.SelStart
TextZone.Find SearchExp, TextZone.SelStart + 1, Len(TextZone.Text)
dep2 = TextZone.SelStart
If (dep2 = dep1) Then
Beep
Exit Function
End If
End Function

Private Sub TextZone_KeyDown(KeyCode As Integer, Shift As Integer)
'F3 Rechercher (Suivant)
If (KeyCode = vbKeyF3) Then
Call Rechercher2_Click
End If
End Sub
TextZone est le RichTexBox hein !!
En fait, SearchExp est une variable qui vient d'un module car c'est par une autre feuille que j'ai mis le textbox
Rechercher2_Click c'est pour appuie sur F3 car il s'arrête au premier trouvé et le met en surbrillance.
Private Sub Rechercher1_Click()
'Menu Rechercher
Search.Show
End Sub

Private Sub Rechercher2_Click()
'Menu Rechercher (Suivant)
If (SearchExp <> "") Then
Call Searching
Else
Call Rechercher1_Click
End If
End Sub
Ici, si SearchExp contient un mot, on recherche à partir du mot trouvé précédemment :
dep1 = TextZone.SelStart

Dans le même coup, je te donne la fonction de remplacer :
'==================================================================='Fonction de remplacer dans le fichier
'===================================================================
Function RemplaceExp()
Dim dep1, dep2
dep1 = TextZone.SelStart
TextZone.Find SearchExp, TextZone.SelStart + 1, Len(TextZone.Text)
dep2 = TextZone.SelStart
If (dep2 > dep1) Then
Dim Question
Question = MsgBox("Voulez-vous remplacer ?", vbYesNoCancel, "Remplacer...")
If (Question = vbYes) Then
TextZone.SelText = ChangeTexte
ElseIf (Question = vbCancel) Then
Exit Function
End If
End If
If (dep2 = dep1) Then
Beep
Exit Function
Else
Call RemplaceExp
End If
End Function

Function RemplaceAllExp()
Dim dep1, dep2
dep1 = TextZone.SelStart
TextZone.Find SearchExp, TextZone.SelStart + 1, Len(TextZone.Text)
dep2 = TextZone.SelStart
If (dep2 > dep1) Then
TextZone.SelText = ChangeTexte
End If
If (dep2 = dep1) Then
Beep
Exit Function
Else
Call RemplaceAllExp
End If
End Function
C'est la meême chose que pour rechercher mais en plus, un autre contenu de edittext se place dans la variable ChangeTexte pour le remplacer. RemplaceAll ne demandera pas de confirmation et ira jusqu'à la fin.
la comparaison de dep1 et dep2 détermine si le texte a été trouvé ou remplacer selon la fonction. Lorsqu'ils sont égaux cela veut dire que la fin du texte est rencontré :)
Oui, je sais c'est un peu difficile à comprendre mais je travaille sur un soft "PHPEditeur" utilisant le RichTextbox ! Là il est en phase presque terminale (quelques points à régler) Je n'ai pas ici détaillé point par point...

Attention, il y a des appels de menupopup. Inutilie de faire un copier /coller intégral. Regarde plutôt la fonction que j'utilise. ++

Débutant mais... obstiné ;)
0
Rejoignez-nous