Recherche un mot, une phrase, ... dans un richtextbox ou une zone de texte

Soyez le premier à donner votre avis sur cette source.

Vue 9 370 fois - Téléchargée 1 085 fois

Description

Les traitements de textes conventionnels offrent dans le menu Edition, la fonction "Rechercher", avec diverses options, du style : vers le haut, vers le bas, en respectant la casse... C'est cette fonction qui est développée ici. Elle est adaptable à tous les programmes VB contenant un RichTextBox ou une simple zone de texte. Ce code pourra éventuellement être utile à l'un ou l'autre...

Source / Exemple :


'Déclaration obligatoire des variables
Option Explicit

'Variable contenant la chaîne de texte à chercher dans le texte source
Dim Txt_A_Chercher As String

'Variable contenant la position de départ du point d'insertion
Dim Position_Start As Long

'Variable contenant le texte source dans lequel il faudra chercher
Dim Txt_Source As String

'Variable contenant, au cours de la recherche, la position du point
'd'insertion à l'intérieur du texte source.
Dim Position_Interne As Long

'Variable contenant le texte à chercher mis en majuscules
'(utilisé si pas respect de la casse)
Dim Txt_A_Chercher_MAJ As String

'Variable contenant le texte source mis en majuscules
'(utilisé si pas respect de la casse)
Dim Txt_Source_MAJ As String

Private Sub Cmd_Find_Click()
    'La variable de txt à chercher prend sa valeur
    Txt_A_Chercher = Txt_Find.Text
    'Lance la procédure "Trouve_Le"
    Trouve_Le
    'Donne focus à la RTBox
    RTBox.SetFocus
End Sub

Sub Trouve_Le()     ' = *** LA PROCÉDURE DE RECHERCHE ***
    
    'Position_Start = là où se trouve le point d'insertion + 1 caractère
    '(faut bien que ça avance)
    Position_Start = RTBox.SelStart + 1
    
    'Le TXT source, c'est le texte du RTBox
    Txt_Source = RTBox.Text
      
    '1/ LA CASSE : Si pas respect de la CASSE, les chaînes "à chercher"
    'et "source" sont converties en majuscules. Ainsi, quelle que soit
    'l'écriture du texte, aucune ambiguïté ne sera présente lors de la
    'recherche.
    
        'Value = 0 = Unchecked = pas respect de la casse
    If Chk_Casse.Value = 0 Then
        Txt_A_Chercher_MAJ = UCase(Txt_A_Chercher)
        Txt_A_Chercher = Txt_A_Chercher_MAJ
        Txt_Source_MAJ = UCase(Txt_Source)
        Txt_Source = Txt_Source_MAJ
    End If
    
        'Value = 1 = Checked = respect de la casse
    If Chk_Casse.Value = 1 Then
        Txt_Source = Txt_Source
        Txt_A_Chercher = Txt_A_Chercher
    End If
    
    '2/ OPTION VERS LE BAS / HAUT
    
    'Si option Bas activée...
    If Opt_Bas(1).Value = True Then
        'C'est l'utilisation de la fonction InStr qui indique la position de la
        'première occurence d'une chaîne à l'intérieur d'une autre chaîne.
        'Syntaxe : InStr([start, ]string1, string2[, compare])
        Position_Interne = InStr(Position_Start + 1, Txt_Source, Txt_A_Chercher)
    
    'Si option Haut activée...
    Else
        'Recule par pas de 1 caractère
        For Position_Interne = Position_Start - 1 To 0 Step -1
            'Revenu au début du RTBox => sortie de boucle
            If Position_Interne = 0 Then Exit For
            'Si texte trouvé (fonction MID) => sortie de boucle.
            'Syntaxe : Mid(string, start[, length])
            'Pour déterminer le nombre de caractères contenus dans l'argument
            'string, on utilise la fonction "Len".
            If Mid(Txt_Source, Position_Interne, Len(Txt_A_Chercher)) = Txt_A_Chercher Then Exit For
            Next
        End If
    
    '3/ TEXTE TROUVÉ ?
        
        'a) Le texte est trouvé ...
    If Position_Interne Then
        'Point de départ de la sélection (mise en surbrillance)
        RTBox.SelStart = Position_Interne - 1
        'Longueur de txt à sélectionner (mettre en surbrillance)
        RTBox.SelLength = Len(Txt_A_Chercher)
        'Un beep si txt trouvé
        Beep
        
        'b) Le txt n'est pas trouvé ou retour au début du RTBox ...
    Else
        Dim Msg, Réponse
        Msg = "Impossible de trouver : " & Chr(34) & Txt_A_Chercher & Chr(34)
        Réponse = MsgBox(Msg, 0, App.Comments)
    End If
End Sub

Private Sub Form_Load()
    'A l'ouverture, Bouton "Chercher" = inactif.
    Cmd_Find.Enabled = False
    'Option "Recherche vers le Bas" = sélectionné.
    Opt_Bas(1).Value = True
End Sub

Private Sub Txt_Find_Change()
    
    'Si pas de texte à rechercher,Bouton "Chercher" = inactif.
    If Txt_Find = "" Then
        Cmd_Find.Enabled = False
    
    'Si présence de texte à chercher, Bouton "Chercher" = actif.
    Else
        Cmd_Find.Enabled = True
    End If
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
26
Date d'inscription
samedi 24 août 2002
Statut
Membre
Dernière intervention
6 septembre 2006

Bonsoir Analexploitation,
Faire une recherche sur le WebBrowser avec la méthode exposée dans ce code ne me paraît pas possible. Je ne vois pas bien comment m'y prendre pour y arriver.
Désolé.
Salut
Messages postés
5
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
8 mai 2005

salut
c'est bien ...bravo
mais j'ai un probleme que je n'arrive pas
a resoudre . mon probleme est le suivant:

est ce que vous pouvez faire la meme chose
avec webbrowser a la place de richtextbox
sans appelez la methode findtext de IE
Messages postés
91
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
27 août 2006
1
cool!
merci !

il sagit bien de ce que je cherchait

9/10 ! bravo
Messages postés
46
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
17 décembre 2007

Bravo !
ce code est bien documenté !!

ça aide vraiment !!
Messages postés
22
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
26 février 2003

cool ça va me servir pour mon prog de chat
merci beaucoup ! un p'tit 9/10
Afficher les 6 commentaires

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.