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é 