Partager via


Comment : rechercher et remplacer du texte dans les documents par programmation

L'objet Find est membre des objets Selection et Range que vous pouvez utiliser indifféremment pour rechercher du texte dans des documents Microsoft Office Word.La commande Replace est une extension de la commande Find.

Utilisez un objet Find pour rechercher du texte, une mise en forme ou un style spécifique dans un document Microsoft Office Word, puis employez la propriété Replacement pour remplacer l'un des éléments trouvés.

S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document et de niveau application pour Word 2013 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.

Utilisation d'un objet Selection

Lorsque vous utilisez un objet Selection pour rechercher du texte, les critères de recherche que vous spécifiez ne sont appliqués qu'au texte sélectionné.Si Selection est un point d'insertion, la recherche s'effectue dans le document.Lorsque l'élément correspondant aux critères de recherche est trouvé, il est automatiquement sélectionné.

Notez que les critères Find sont cumulatifs, ce qui signifie qu'ils sont ajoutés aux critères de recherche précédents.Avant la recherche, effacez la mise en forme des recherches précédentes à l'aide de la méthode ClearFormatting.

Pour rechercher du texte à l'aide d'un objet Selection

  1. Assignez une chaîne de recherche à une variable.

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. Effacez la mise en forme des recherches précédentes.

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. Exécutez la recherche et affichez un message avec les résultats.

    If Application.Selection.Find.Execute(findText) = True Then
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("The text could not be located.")
    End If
    
    if (Application.Selection.Find.Execute(ref findText,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
        ref missing, ref missing)) 
    { 
        MessageBox.Show("Text found.");
    } 
    else
    { 
        MessageBox.Show("The text could not be located.");
    } 
    

L'exemple suivant illustre la méthode complète.

Private Sub SelectionFind()
    Dim findText As String = "find me"

    Application.Selection.Find.ClearFormatting()

    If Application.Selection.Find.Execute(findText) = True Then
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("The text could not be located.")
    End If
End Sub
private void SelectionFind() 
{ 
    object findText = "find me";

    Application.Selection.Find.ClearFormatting();

    if (Application.Selection.Find.Execute(ref findText,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
        ref missing, ref missing)) 
    { 
        MessageBox.Show("Text found.");
    } 
    else
    { 
        MessageBox.Show("The text could not be located.");
    } 
}

Utilisation d'un objet Range

L'utilisation d'un objet Range permet de rechercher du texte sans rien afficher dans l'interface utilisateur.L'objet Find retourne True si du texte correspondant aux critères de recherche est trouvé et False si ce n'est pas le cas.Il redéfinit l'objet Range pour qu'il corresponde aux critères de recherche si le texte est trouvé.

Pour rechercher du texte à l'aide d'un objet Range

  1. Définissez un objet Range constitué du deuxième paragraphe du document.

    L'exemple de code suivant peut être utilisé dans une personnalisation au niveau du document.

    Dim rng As Word.Range = Me.Paragraphs(2).Range
    
    Word.Range rng = this.Paragraphs[2].Range; 
    

    L'exemple de code suivant peut être utilisé dans un complément d'application.Cet exemple utilise le document actif.

    Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range
    
    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
  2. À l'aide de la propriété Find de l'objet Range, effacez tout d'abord les éventuelles options de mise en forme existantes, puis recherchez la chaîne find me.

    rng.Find.ClearFormatting()
    
    If rng.Find.Execute(findText) Then
    
    rng.Find.ClearFormatting();
    
    if (rng.Find.Execute(ref findText,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
        ref missing, ref missing)) 
    { 
    
  3. Affichez les résultats de la recherche dans un message, puis sélectionnez l'objet Range pour le rendre visible.

        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("Text not found.")
    End If
    
    rng.Select()
    
        MessageBox.Show("Text found.");
    } 
    else 
    { 
        MessageBox.Show("Text not found.");
    } 
    
    rng.Select(); 
    

    Si la recherche échoue, le deuxième paragraphe est sélectionné ; si elle réussit, les critères de la recherche sont affichés.

L'exemple suivant affiche le code complet correspondant à une personnalisation au niveau du document.Pour utiliser cet exemple, exécutez le code dans votre projet à partir de la classe ThisDocument.

Private Sub RangeFind()
    Dim findText As String = "find me"

    Dim rng As Word.Range = Me.Paragraphs(2).Range

    rng.Find.ClearFormatting()

    If rng.Find.Execute(findText) Then
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("Text not found.")
    End If

    rng.Select()
End Sub
private void RangeFind() 
{ 
    object findText = "find me";

    Word.Range rng = this.Paragraphs[2].Range; 

    rng.Find.ClearFormatting();

    if (rng.Find.Execute(ref findText,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
        ref missing, ref missing)) 
    { 
        MessageBox.Show("Text found.");
    } 
    else 
    { 
        MessageBox.Show("Text not found.");
    } 

    rng.Select(); 
}

L'exemple suivant affiche le code complet correspondant à un complément d'application.Pour utiliser cet exemple, exécutez le code à partir de la classe ThisAddIn de votre projet.

Private Sub RangeFind()
    Dim findText As Object = "find me"

    Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range

    rng.Find.ClearFormatting()

    If rng.Find.Execute(findText) Then
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("Text not found.")
    End If

    rng.Select()
End Sub
private void RangeFind()
{
    object findText = "find me";

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;

    rng.Find.ClearFormatting();

    if (rng.Find.Execute(ref findText,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing))
    {
        MessageBox.Show("Text found.");
    }
    else
    {
        MessageBox.Show("Text not found.");
    }

    rng.Select();
}

Recherche et remplacement de texte dans les documents

Le code suivant recherche la sélection actuelle et remplace toutes les occurrences de la chaîne find me par la chaîne Found.

Pour rechercher et remplacer du texte dans les documents

  1. Ajoutez le code suivant à la classe d' ThisDocument ou d' ThisAddIn dans votre projet.

    Private Sub SearchReplace()
        Dim FindObject As Word.Find = Application.Selection.Find
        With FindObject
            .ClearFormatting()
            .Text = "find me"
            .Replacement.ClearFormatting()
            .Replacement.Text = "Found"
            .Execute(Replace:=Word.WdReplace.wdReplaceAll)
        End With
    End Sub
    
    private void SearchReplace()
    {
        Word.Find findObject = Application.Selection.Find;
        findObject.ClearFormatting();
        findObject.Text = "find me";
        findObject.Replacement.ClearFormatting();
        findObject.Replacement.Text = "Found";
    
        object replaceAll = Word.WdReplace.wdReplaceAll;
        findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing, ref missing,
            ref replaceAll, ref missing, ref missing, ref missing, ref missing);
    }
    

    La classe Find possède une méthode ClearFormatting, et la classe Replacement a également sa propre méthode ClearFormatting.Lorsque vous procédez à des opérations de recherche et remplacement, vous devez utiliser la méthode ClearFormatting des deux objets.Si vous l'utilisez uniquement sur l'objet Find, vous risquez d'obtenir des résultats inattendus dans le texte de remplacement.

  2. Utilisez la méthode Execute de l'objet Find pour remplacer chaque élément trouvé.Pour spécifier les éléments à remplacer, utilisez le paramètre Replace.Ce paramètre peut avoir l'une des valeurs WdReplace suivantes :

Voir aussi

Tâches

Comment : définir les options de recherche dans Word par programmation

Comment : parcourir les éléments trouvés dans les documents par programmation

Comment : définir et sélectionner des plages dans les documents par programmation

Comment : restaurer des sélections après des recherches par programmation

Concepts

Paramètres optionnels dans les solutions Office