Comment : insérer du texte dans les documents Word par programmationHow to: Programmatically Insert Text into Word Documents

Il existe trois principaux moyens pour insérer du texte dans des documents Microsoft Office Word :There are three primary ways to insert text into Microsoft Office Word documents:

Note

Vous pouvez également insérer du texte dans les contrôles de contenu et les signets.You can also insert text into content controls and bookmarks. Pour plus d’informations, consultez contrôles de contenu et contrôle Bookmark.For more information, see Content Controls and Bookmark Control.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document et aux projets de compléments VSTO pour Word.Applies to: The information in this topic applies to document-level projects and VSTO add-in projects for Word. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features Available by Office Application and Project Type.

Insertion de texte dans une plageInserting Text in a Range

Utilisez la propriété Microsoft.Office.Interop.Word.Range.Text* d'un objet Range pour insérer du texte dans un document.Use the Microsoft.Office.Interop.Word.Range.Text* property of a Range object to insert text in a document.

Pour insérer du texte dans une plageTo insert text in a range

  1. Spécifiez une plage au début d’un document et insérer le texte New Text.Specify a range at the beginning of a document and insert the text New Text.

    Vous pouvez utiliser l’exemple de code suivant dans une personnalisation au niveau du document.The following code example can be used in a document-level customization.

    Dim rng As Word.Range = Me.Range(Start:=0, End:=0)
    rng.Text = " New Text "
    
    object start = 0; 
    object end = 0; 
    
    Word.Range rng = this.Range(ref start, ref end); 
    rng.Text = "New Text"; 
    

    L'exemple de code suivant peut être utilisé dans un complément VSTO.The following code example can be used in a VSTO Add-in. Ce code utilise le document actif.This code uses the active document.

    Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=0)
    rng.Text = " New Text "
    
    Word.Range rng = this.Application.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";
    
  2. Sélectionnez l'objet Range , qui s'est développé à partir d'un caractère jusqu'à la longueur correspondant au texte inséré.Select the Range object, which has expanded from one character to the length of the inserted text.

    rng.Select()
    
    rng.Select();
    

Remplacement de texte dans une plageReplacing Text in a Range

Si la plage spécifiée contient du texte, tout le texte de la plage est remplacé par le texte inséré.If the specified range contains text, all text in the range is replaced with the inserted text.

Pour remplacer du texte dans une plageTo replace text in a range

  1. Créez un objet Range comprenant les 12 premiers caractères du document.Create a Range object that consists of the first 12 characters in the document.

    Vous pouvez utiliser l’exemple de code suivant dans une personnalisation au niveau du document.The following code example can be used in a document-level customization.

    Dim rng As Word.Range = Me.Range(Start:=0, End:=12)
    
    object start = 0; 
    object end = 12; 
    
    Word.Range rng = this.Range(ref start, ref end); 
    

    L'exemple de code suivant peut être utilisé dans un complément VSTO.The following code example can be used in a VSTO Add-in. Ce code utilise le document actif.This code uses the active document.

    Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=12)
    
    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. Remplacez ces caractères par la chaîne New Text.Replace those characters with the string New Text.

    rng.Text = " New Text "
    
    rng.Text = "New Text"; 
    
  3. Sélectionnez la plage.Select the range.

    rng.Select()
    
    rng.Select();
    

Insertion de texte à l'aide de TypeTextInserting Text Using TypeText

La méthode Microsoft.Office.Interop.Word.Selection.TypeText* insère du texte au niveau de la sélection.The Microsoft.Office.Interop.Word.Selection.TypeText* method inserts text at the selection. Microsoft.Office.Interop.Word.Selection.TypeText* se comporte différemment selon les options définies sur l'ordinateur de l'utilisateur.Microsoft.Office.Interop.Word.Selection.TypeText* behaves differently depending on the options set on the user's computer. Le code de la procédure suivante déclare une variable objet Selection , puis désactive l'option Overtype , si elle est activée.The code in the following procedure declares a Selection object variable, and turns off the Overtype option if it is turned on. Si l'option Overtype est activée, le texte situé à proximité du curseur est remplacé.If the Overtype option is activated, then any text next to the cursor is overwritten.

Pour insérer du texte à l'aide de la méthode TypeTextTo insert text using the TypeText method

  1. Déclarez une variable objet Selection .Declare a Selection object variable.

    Dim currentSelection As Word.Selection = Application.Selection
    
    Word.Selection currentSelection = Application.Selection; 
    
  2. Désactivez l'option Overtype , si elle est activée.Turn off the Overtype option if it is turned on.

    If Application.Options.Overtype Then
        Application.Options.Overtype = False
    End If
    
    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    } 
    
  3. Vérifiez si la sélection actuelle est un point d'insertion.Test to see whether the current selection is an insertion point.

    Si tel est le cas, le code insère une phrase à l'aide de Microsoft.Office.Interop.Word.Selection.TypeText*, puis une marque de paragraphe à l'aide de la méthode Microsoft.Office.Interop.Word.Selection.TypeParagraph* .If it is, the code inserts a sentence using Microsoft.Office.Interop.Word.Selection.TypeText*, and then a paragraph mark using the Microsoft.Office.Interop.Word.Selection.TypeParagraph* method.

    With currentSelection
    
        ' Test to see if selection is an insertion point.
        If .Type = Word.WdSelectionType.wdSelectionIP Then
            .TypeText("Inserting at insertion point. ")
            .TypeParagraph()
    
    // Test to see if selection is an insertion point.
    if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
    { 
        currentSelection.TypeText("Inserting at insertion point. ");
        currentSelection.TypeParagraph(); 
    } 
    
  4. Le code du bloc ElseIf vérifie si la sélection est une sélection normale.The code in the ElseIf block tests to see whether the selection is a normal selection. Si tel est le cas, un autre bloc If vérifie si l'option ReplaceSelection est activée.If it is, then another If block tests to see whether the ReplaceSelection option is turned on. Si tel est le cas, le code utilise la méthode Microsoft.Office.Interop.Word.Selection.Collapse* de la sélection pour réduire cette dernière à un point d'insertion au début du bloc de texte sélectionné.If it is, the code uses the Microsoft.Office.Interop.Word.Selection.Collapse* method of the selection to collapse the selection to an insertion point at the start of the selected block of text. Insérez le texte et une marque de paragraphe.Insert the text and a paragraph mark.

    ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then
        ' Move to start of selection.
        If Application.Options.ReplaceSelection Then
            .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart)
        End If
        .TypeText("Inserting before a text block. ")
        .TypeParagraph()
    
    else 
        if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal)
        { 
            // Move to start of selection.
            if (Application.Options.ReplaceSelection)
            { 
                object direction = Word.WdCollapseDirection.wdCollapseStart;
                currentSelection.Collapse(ref direction);
            }
            currentSelection.TypeText("Inserting before a text block. ");
            currentSelection.TypeParagraph();
        }
    
  5. Si la sélection n'est pas un point d'insertion ou un bloc de texte sélectionné, le code du bloc Else ne fait rien.If the selection is not an insertion point or a block of selected text, then the code in the Else block does nothing.

    Else
        ' Do nothing.
    End If
    
    else
    {
        // Do nothing.
    }
    

    Vous pouvez également utiliser la méthode Microsoft.Office.Interop.Word.Selection.TypeBackspace* de l'objet Selection , qui reproduit la fonctionnalité de la touche Retour arrière de votre clavier.You can also use the Microsoft.Office.Interop.Word.Selection.TypeBackspace* method of the Selection object, which mimics the functionality of the BACKSPACE key on your keyboard. Toutefois, quand il s'agit d'insérer et de manipuler du texte, l'objet Range vous offre davantage de contrôle.However, when it comes to inserting and manipulating text, the Range object offers you more control.

    L'exemple suivant montre le code complet.The following example shows the complete code. Pour utiliser cet exemple, exécutez le code à partir de la classe ThisDocument ou ThisAddIn dans votre projet.To use this example, run the code from the ThisDocument or ThisAddIn class in your project.

    Friend Sub SelectionInsertText()
        Dim currentSelection As Word.Selection = Application.Selection
    
        ' Store the user's current Overtype selection
        Dim userOvertype As Boolean = Application.Options.Overtype
    
        ' Make sure Overtype is turned off.
        If Application.Options.Overtype Then
            Application.Options.Overtype = False
        End If
    
        With currentSelection
    
            ' Test to see if selection is an insertion point.
            If .Type = Word.WdSelectionType.wdSelectionIP Then
                .TypeText("Inserting at insertion point. ")
                .TypeParagraph()
    
            ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then
                ' Move to start of selection.
                If Application.Options.ReplaceSelection Then
                    .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart)
                End If
                .TypeText("Inserting before a text block. ")
                .TypeParagraph()
    
            Else
                ' Do nothing.
            End If
        End With
    
        ' Restore the user's Overtype selection
        Application.Options.Overtype = userOvertype
    End Sub
    
    private void SelectionInsertText() 
    { 
        Word.Selection currentSelection = Application.Selection; 
    
        // Store the user's current Overtype selection
        bool userOvertype = Application.Options.Overtype;
    
        // Make sure Overtype is turned off.
        if (Application.Options.Overtype) 
        { 
            Application.Options.Overtype = false; 
        } 
    
        // Test to see if selection is an insertion point.
        if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
        { 
            currentSelection.TypeText("Inserting at insertion point. ");
            currentSelection.TypeParagraph(); 
        } 
        else 
            if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal)
            { 
                // Move to start of selection.
                if (Application.Options.ReplaceSelection)
                { 
                    object direction = Word.WdCollapseDirection.wdCollapseStart;
                    currentSelection.Collapse(ref direction);
                }
                currentSelection.TypeText("Inserting before a text block. ");
                currentSelection.TypeParagraph();
            }
            else
            {
                // Do nothing.
            }
    
        // Restore the user's Overtype selection
        Application.Options.Overtype = userOvertype;
    }
    

Voir aussiSee Also

Comment : mettre en forme le texte dans des Documents par programmation How to: Programmatically Format Text in Documents
Comment : définir par programme et sélectionner des plages dans des Documents How to: Programmatically Define and Select Ranges in Documents
Guide pratique pour étendre des plages dans des documents par programmationHow to: Programmatically Extend Ranges in Documents