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

Soyez le premier à donner votre avis sur cette source.

Vue 8 975 fois - Téléchargée 1 051 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

cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
Il s'avère que je recherche quelque chose dans le genre.
Je le télécharge et vois si ça me convient.
Compte-tenu du fait qu'il y ait un ZIP et surtout une Capture, je mets déjà 8.
peponr
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
microdav
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 !!
Fullnet Software
Messages postés
91
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
27 août 2006
-
cool!
merci !

il sagit bien de ce que je cherchait

9/10 ! bravo
analexploitation
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

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.