Insérer du texte par programmation dans des documents Word

Il existe trois principaux moyens pour insérer du texte dans des documents Microsoft Office Word :

  • insérer du texte dans une plage ;

  • remplacer du texte dans une plage par un nouveau texte ;

  • utiliser la méthode TypeText d'un objet Selection pour insérer du texte au niveau du curseur ou de la sélection.

Remarque

Vous pouvez également insérer du texte dans les contrôles de contenu et les signets. Pour plus d’informations, consultez Contrôles de contenu et contrôle Signet.

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.

Remarque

Vous souhaitez développer des solutions qui étendent l’expérience de Bureau sur plusieurs plateformes ? Consultez le nouveau modèle de compléments Bureau. Bureau compléments ont une petite empreinte par rapport aux compléments et solutions VSTO, et vous pouvez les créer à l’aide de presque n’importe quelle technologie de programmation web, telle que HTML5, JavaScript, CSS3 et XML.

Insérer du texte dans une plage

Utilisez la propriété Text d'un objet Range pour insérer du texte dans un document.

Pour insérer du texte dans une plage

  1. Spécifiez une plage au début d’un document et insérer le texte New Text.

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

    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. Ce code utilise le document actif.

    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é.

    rng.Select();
    

Remplacer du texte dans une plage

Si la plage spécifiée contient du texte, tout le texte de la plage est remplacé par le texte inséré.

Pour remplacer du texte dans une plage

  1. Créez un objet Range comprenant les 12 premiers caractères du document.

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

    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. Ce code utilise le document actif.

    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. Remplacez ces caractères par la chaîne New Text.

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

    rng.Select();
    

Insérer du texte à l’aide de TypeText

La méthode TypeText insère du texte au niveau de la sélection. TypeText se comporte différemment selon les options définies sur l'ordinateur de l'utilisateur. Le code de la procédure suivante déclare une variable objet Selection , puis désactive l'option Overtype , si elle est activée. Si l'option Overtype est activée, le texte situé à proximité du curseur est remplacé.

Pour insérer du texte à l'aide de la méthode TypeText

  1. Déclarez une variable objet Selection,

    Word.Selection currentSelection = Application.Selection;
    
  2. Désactivez l'option Overtype , si elle est activée.

    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    }
    
  3. Vérifiez si la sélection actuelle est un point d'insertion.

    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 .

    // 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. Si tel est le cas, un autre bloc If vérifie si l'option ReplaceSelection est activée. 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é. Insérez le texte et une marque de paragraphe.

    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.

    else
    {
        // Do nothing.
    }
    

    Vous pouvez également utiliser la TypeBackspace méthode de l’objet Selection , qui imite les fonctionnalités de la touche Backspace sur votre clavier. Toutefois, quand il s'agit d'insérer et de manipuler du texte, l'objet Range vous offre davantage de contrôle.

    L'exemple suivant montre le code complet. Pour utiliser cet exemple, exécutez le code à partir de la classe ThisDocument ou ThisAddIn dans votre projet.

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