Partager via


Méthode ITextRange::FindText (tom.h)

Recherche jusqu’à Nombre de caractères pour le texte donné par bstr. La position de départ et la direction sont également spécifiées par Count, et les critères de correspondance sont donnés par indicateurs.

Syntaxe

HRESULT FindText(
  BSTR bstr,
  long Count,
  long Flags,
  long *pLength
);

Paramètres

bstr

Type : BSTR

Chaîne à rechercher.

Count

Type : long

Nombre maximal de caractères à rechercher. Il peut s’agir de l’un des éléments suivants.

tomForward Recherches jusqu’à la fin de l’histoire. Il s’agit de la valeur par défaut.
n (supérieur à 0) Recherche en avant n caractères, à partir de cpFirst. Si la plage elle-même correspond à bstr, une autre recherche est effectuée à partir de cpFirst + 1.
n(inférieur à 0) Recherche en arrière n caractères, à partir de cpLim. Si la plage elle-même correspond à bstr, une autre recherche est effectuée à partir de cpLim–1.
0 (plage dégénérée) La recherche commence après la plage.
0 (plage non dégénérée) La recherche est limitée à la plage.
 

Dans tous les cas, si une chaîne est trouvée, les limites de plage sont modifiées pour être celles de la chaîne correspondante et pLength est défini sur la longueur de la chaîne. Si la chaîne est introuvable, la plage reste inchangée et pLength est défini sur zéro.

Flags

Type : long

Indicateurs régissant les comparaisons. Il peut s’agir de 0 (valeur par défaut) ou d’une combinaison des valeurs suivantes.

tomMatchWord 2 Correspond à des mots entiers.
tomMatchCase 4 Correspond à la casse.
tomMatchPattern 8 Correspond aux expressions régulières.

pLength

Type : long*

Longueur de la chaîne correspondante.

Valeur retournée

Type : HRESULT

La méthode retourne une valeur HRESULT . Si la méthode réussit, elle retourne S_OK. Si la méthode échoue, elle retourne S_FALSE. Pour plus d’informations sur les codes d’erreur COM, consultez Gestion des erreurs dans COM.

Remarques

La méthode ITextRange::FindText peut également faire correspondre des caractères spéciaux à l’aide d’un caret (^) suivi d’une lettre spéciale. Pour obtenir la liste des caractères spéciaux, consultez la liste spéciale disponible dans la boîte de dialogue Rechercher et remplacer Microsoft Word. Par exemple, ^p correspond à la marque de paragraphe suivante. Notez que ^c peut être utilisé pour représenter le contenu du Presse-papiers dans la chaîne à remplacer. Ainsi, l’utilisation ^c dans la chaîne de recherche vous permet de rechercher du texte enrichi. Pour plus d’informations, consultez les fichiers d’aide Word.

En comparaison avec la méthode ITextRange::FindText, la méthode ITextRange::FindTextStart effectue des recherches vers l’avant ou vers l’arrière à partir du cp de début de la plage, et la méthode ITextRange::FindTextEnd effectue des recherches vers l’avant ou vers l’arrière à partir de la fin cp de la plage. Pour plus d’informations, consultez les descriptions de ces méthodes.

Voici plusieurs extraits de code qui montrent les méthodes ITextRange::FindText .

Exemple n° 1. Le programme Microsoft Visual Basic pour Applications (VBA) suivant imprime tous les commentaires /* ... */ dans un article identifié par la plage r.

Sub PrintComments (r As ITextRange)
    r.SetRange 0, 0                                      'r = insertion pt at start of story
    Do While r.FindText("/*") And r.FindTextEnd("*/")    'Select comment
        r.MoveStart tomCharacter, 2                      'But do not include the opening or 
                                                         'closing comment brackets
        r.MoveEnd tomCharacter, -2                       
        Print r                                          'Show the folks
    Loop
End Sub

Au lieu d’imprimer ces commentaires, ils peuvent être insérés dans un autre instance de modification et enregistrés dans un fichier, ou ils peuvent être insérés dans des cellules distinctes d’une table ou d’une feuille de calcul.

Pour imprimer toutes les lignes contenant une ou plusieurs occurrences du mot « laser », remplacez la boucle par le code suivant :

    While r.FindText("laser")            // Select next occurrence of "laser"
        r.Expand tomLine                // Select enclosing line    
        Print r                    // Print the line
    Wend

Exemple n° 2. Le programme suivant imprime une liste téléphonique, en fonction d’un article qui contient une liste d’adresses. Les entrées de liste d’adresses sont séparées par au moins deux marques de paragraphe, et chaque entrée a la forme suivante.

Person/Business Name
Address (one or more lines)
(area code) telephone number 

Notez l’utilisation du caractère ^p dans l’argument de chaîne FindText pour localiser une paire de marques de paragraphe consécutives.

Sub PrintTelephoneList (r As ITextRange)
    r.SetRange 0, 0                 // r = insertion point at start of story
    r.MoveWhile C1_WHITE            // Bypass any initial white space
    Do
        r.EndOf tomParagraph, 1     // Select next para (line): has name
        Print r                    // Print it
        Do
            r.MoveWhile C1_SPACE        // Bypass possible space chars
            If r.Char = Asc("(") Then Exit Do    // Look for start of telephone #
        Loop While r.Move(tomParagraph)    // Go to next paragraph
        r.EndOf tomParagraph, 1        // Select line with telephone number
        Print r                    // Print it
    Loop While r.FindText("^p^p")        // Find two consecutive para marks
End Sub

Exemple n° 3. La sous-routine suivante remplace toutes les occurrences de la chaîne, str1, dans une plage par str2 :

Sub Replace ( tr As ITextRange, str1 As String, str2 As String )
    Dim r As ITextRange
    r = tr.Duplicate                // Copy tr parameters to r
    r.End = r.Start                    // Convert to insertion point at Start
    While r.FindText(str1, tr.End - r.End)        // Match next occurrence of str
        r = str2                // Replace it with rep
    Wend                        // Iterate till no more matches
End Sub

Exemple n° 4. La ligne de code suivante insère un vide avant la première occurrence d’une parenthèse droite, « ( » », qui suit une occurrence de HRESULT.

    If r.FindText("HRESULT") And r.FindText("(") Then r = " ("

Pour ce faire, remplacez if en boucle While/Wend dans la ligne de code ci-dessus. Il s’agit d’un exemple de macro FIND/REPLACE qui ne peut pas être exécutée avec les boîtes de dialogue Rechercher et Remplacer .

Configuration requise

   
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête tom.h
DLL Msftedit.dll

Voir aussi

Conceptuel

FindTextEnd

FindTextStart

ITextRange

Référence

Modèle objet texte