Partager via


Rechercher et remplacer par programmation du texte dans des documents

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 parcourir un document Microsoft Office Word et rechercher du texte, une mise en forme ou un style spécifique, et utilisez 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 au niveau du document et aux projets de complément VSTO pour Word. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Utiliser un objet Selection

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

Il est important de noter 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. Affectez une chaîne de recherche à une variable.

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

    Application.Selection.Find.ClearFormatting();
    
  3. Exécutez la recherche et affichez une boîte de message avec les résultats.

    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 montre la méthode complète.

    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.");
        } 
    }
    

Utiliser un objet Range

L'utilisation d'un objet Range vous permet de rechercher du texte sans rien afficher dans l'interface utilisateur. L’objet retourne True si le Find texte est trouvé qui correspond aux critères de recherche, et False si ce n’est pas le cas. Il redéfinit également 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.

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

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

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
  2. À l’aide de la Find propriété de l’objet Range , effacez d’abord les options de mise en forme existantes, puis recherchez la chaîne qui me trouve.

    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 une boîte de message, puis sélectionnez l'objet Range pour le rendre visible.

        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 recherche sont affichés.

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

    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 montre le code complet pour un complément VSTO. Pour utiliser cet exemple, exécutez le code à partir de la classe ThisAddIn dans votre projet.

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();
}

Rechercher et remplacer du texte dans des documents

Le code suivant recherche la sélection actuelle et remplace toutes les occurrences de la chaîne qui me trouvent par la chaîne Trouvée.

Pour rechercher et remplacer du texte dans des documents

  1. Ajoutez l'exemple de code suivant à la classe ThisDocument ou ThisAddIn dans votre projet.

    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 a une méthode ClearFormatting et la classe Replacement a également sa propre méthode ClearFormatting. Lorsque vous effectuez des opérations de recherche et de remplacement, vous devez utiliser la méthode ClearFormatting des deux objets. Si vous l'utilisez uniquement sur l'objet Find, vous pouvez 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 :