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:

  • insérer du texte dans une plage ;Insert text in a range.

  • remplacer du texte dans une plage par un nouveau texte ;Replace text in a range with new text.

  • utiliser la méthode TypeText d'un objet Selection pour insérer du texte au niveau du curseur ou de la sélection.Use the TypeText method of a Selection object to insert text at the cursor or selection.

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 Bookmark (contrôle).For more information, see Content controls and Bookmark control.

S’applique à : les informations contenues dans cette rubrique s’applique au document-projets et ajouter de VSTO de niveau-dans les projets 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.

Insérer du texte dans une plageInsert text in a range

Utilisez la propriété Text d'un objet Range pour insérer du texte dans un document.Use the 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();
    

Remplacer du texte dans une plageReplace 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();
    

Insérer du texte à l’aide de TypeTextInsert text using TypeText

La méthode TypeText insère du texte au niveau de la sélection.The TypeText method inserts text at the selection. TypeText se comporte différemment selon les options définies sur l'ordinateur de l'utilisateur.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 TypeText, puis une marque de paragraphe à l'aide de la méthode TypeParagraph .If it is, the code inserts a sentence using TypeText, and then a paragraph mark using the 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 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 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 le TypeBackspace méthode de la Selection objet, qui reproduit la fonctionnalité de la retour arrière clé de votre clavier.You can also use the 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 dans les documents par programmation How to: Programmatically format text in documents
Comment : définir et sélectionner des plages dans les documents par programmation How to: Programmatically define and select ranges in documents
Comment : étendre des plages dans des documents par programmationHow to: Programmatically extend ranges in documents