Partager via


Comment : exclure les marques de paragraphe lors de la création de plages par programmation

Chaque fois que vous créez un objet Range reposant sur un paragraphe, tous les caractères non imprimables, tels que les marques de paragraphe, sont inclus dans la plage.Vous souhaitez peut-être insérer le texte d'un paragraphe source dans un paragraphe de destination.Si vous ne souhaitez pas fractionner le paragraphe de destination en paragraphes séparés, vous devez d'abord supprimer la marque de paragraphe du paragraphe source.En outre, étant donné que les informations relatives à la mise en forme de paragraphe sont stockées dans la marque de paragraphe, il est possible que vous ne vouliez pas les inclure lorsque vous insérez la plage dans un paragraphe existant.

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.

L'exemple de procédure suivant déclare deux variables chaîne, récupère le contenu des premier et deuxième paragraphes du document actif, puis échange leur contenu.L'exemple illustre ensuite la suppression de la marque de paragraphe dans la plage à l'aide de la méthode MoveEnd et l'insertion du texte à l'intérieur du paragraphe.

Pour contrôler la structure de paragraphe lors de l'insertion de texte

  1. Créez deux variables de portée pour les premier et deuxième paragraphes et récupérez leur contenu à l'aide de la propriété Text.

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

    Dim firstRange As Word.Range = Me.Paragraphs(1).Range
    Dim secondRange As Word.Range = Me.Paragraphs(2).Range
    
    Dim firstString As String = firstRange.Text
    Dim secondString As String = secondRange.Text
    
    Word.Range firstRange = this.Paragraphs[1].Range; 
    Word.Range secondRange = this.Paragraphs[2].Range; 
    
    string firstString = firstRange.Text; 
    string secondString = secondRange.Text; 
    

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

    Dim document As Word.Document = Me.Application.ActiveDocument
    Dim firstRange As Word.Range = document.Paragraphs(1).Range
    Dim secondRange As Word.Range = document.Paragraphs(2).Range
    
    Dim firstString As String = firstRange.Text
    Dim secondString As String = secondRange.Text
    
    Word.Document document = this.Application.ActiveDocument;
    Word.Range firstRange = document.Paragraphs[1].Range;
    Word.Range secondRange = document.Paragraphs[2].Range;
    
    string firstString = firstRange.Text;
    string secondString = secondRange.Text;
    
  2. Assignez la propriété Text, en échangeant le texte entre les deux paragraphes.

    firstRange.Text = secondString
    secondRange.Text = firstString
    
    firstRange.Text = secondString; 
    secondRange.Text = firstString; 
    
  3. Sélectionnez chaque plage une après l'autre et marquez une pause pour afficher les résultats dans une boîte de message.

    firstRange.Select()
    MessageBox.Show(firstRange.Text)
    secondRange.Select()
    MessageBox.Show(secondRange.Text)
    
    firstRange.Select(); 
    MessageBox.Show(firstRange.Text); 
    secondRange.Select(); 
    MessageBox.Show(secondRange.Text); 
    
  4. Ajustez la firstRange à l'aide de la méthode MoveEnd afin que la marque de paragraphe ne fasse plus partie de la firstRange.

    firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1)
    
    object charUnit = Word.WdUnits.wdCharacter;
    object move = -1;  // move left 1
    
    firstRange.MoveEnd(ref charUnit, ref move);
    
  5. Remplacez le reste du texte dans le premier paragraphe, en assignant une nouvelle chaîne à la propriété Text de la plage.

    firstRange.Text = "New content for paragraph 1."
    
    firstRange.Text = "New content for paragraph 1.";
    
  6. Remplacez le texte de la secondRange, en incluant la marque de paragraphe.

    secondRange.Text = "New content for paragraph 2."
    
    secondRange.Text = "New content for paragraph 2.";
    
  7. Sélectionnez la firstRange et marquez une pause pour afficher les résultats dans un message, puis faites la même chose avec la secondRange.

    Étant donné que la firstRange a été redéfinie pour exclure la marque de paragraphe, la mise en forme d'origine du paragraphe est conservée.Toutefois, une phrase a été insérée sur la marque de paragraphe dans la secondRange, supprimant ainsi le paragraphe séparé.

    firstRange.Select()
    MessageBox.Show(firstRange.Text)
    secondRange.Select()
    MessageBox.Show(secondRange.Text)
    
    firstRange.Select(); 
    MessageBox.Show(firstRange.Text); 
    secondRange.Select(); 
    MessageBox.Show(secondRange.Text); 
    

    Le contenu initial des deux plages a été enregistré comme chaînes, afin de pouvoir rétablir l'état d'origine du document.

  8. Ajustez à nouveau firstRange pour inclure la marque de paragraphe à l'aide de la méthode MoveEnd pour une seule position de caractère.

    firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
    
    move = 1;  // move right 1
    firstRange.MoveEnd(ref charUnit, ref move); 
    
  9. Supprimez la secondRange.Cela rétablit l'état initial du paragraphe trois.

    secondRange.Delete()
    
    secondRange.Delete(ref missing, ref missing); 
    
  10. Rétablissez le texte de paragraphe initial dans la firstRange.

    firstRange.Text = firstString
    
    firstRange.Text = firstString; 
    
  11. Utilisez la méthode InsertAfter de l'objet Range pour insérer le contenu initial du deuxième paragraphe après la firstRange, puis sélectionnez la firstRange.

    firstRange.InsertAfter(secondString)
    firstRange.Select()
    
    firstRange.InsertAfter(secondString); 
    firstRange.Select(); 
    

Exemple de personnalisation au niveau du document

Pour contrôler la structure de paragraphe lors de l'insertion de texte dans les personnalisations au niveau du document

  • L'exemple suivant affiche la méthode complète correspondant à la personnalisation au niveau du document.Pour utiliser ce code, exécutez-le dans votre projet à partir de la classe ThisDocument.

    Private Sub ReplaceParagraphText()
    
        Dim firstRange As Word.Range = Me.Paragraphs(1).Range
        Dim secondRange As Word.Range = Me.Paragraphs(2).Range
    
        Dim firstString As String = firstRange.Text
        Dim secondString As String = secondRange.Text
    
        firstRange.Text = secondString
        secondRange.Text = firstString
    
        firstRange.Select()
        MessageBox.Show(firstRange.Text)
        secondRange.Select()
        MessageBox.Show(secondRange.Text)
    
        firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1)
    
        firstRange.Text = "New content for paragraph 1."
        secondRange.Text = "New content for paragraph 2."
    
        firstRange.Select()
        MessageBox.Show(firstRange.Text)
        secondRange.Select()
        MessageBox.Show(secondRange.Text)
    
        firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
    
        secondRange.Delete()
    
        firstRange.Text = firstString
    
        firstRange.InsertAfter(secondString)
        firstRange.Select()
    End Sub
    
    private void ReplaceParagraphText() 
    { 
        Word.Range firstRange = this.Paragraphs[1].Range; 
        Word.Range secondRange = this.Paragraphs[2].Range; 
    
        string firstString = firstRange.Text; 
        string secondString = secondRange.Text; 
    
        firstRange.Text = secondString; 
        secondRange.Text = firstString; 
    
        firstRange.Select(); 
        MessageBox.Show(firstRange.Text); 
        secondRange.Select(); 
        MessageBox.Show(secondRange.Text); 
    
        object charUnit = Word.WdUnits.wdCharacter;
        object move = -1;  // move left 1
    
        firstRange.MoveEnd(ref charUnit, ref move);
    
        firstRange.Text = "New content for paragraph 1.";
        secondRange.Text = "New content for paragraph 2.";
    
        firstRange.Select(); 
        MessageBox.Show(firstRange.Text); 
        secondRange.Select(); 
        MessageBox.Show(secondRange.Text); 
    
        move = 1;  // move right 1
        firstRange.MoveEnd(ref charUnit, ref move); 
    
        secondRange.Delete(ref missing, ref missing); 
    
        firstRange.Text = firstString; 
    
        firstRange.InsertAfter(secondString); 
        firstRange.Select(); 
    }
    

Exemple de complément d'application

Pour contrôler la structure de paragraphe lors de l'insertion de texte dans un complément au niveau de l'application

  • L'exemple suivant affiche la méthode complète correspondant à un complément d'application.Pour utiliser ce code, exécutez-le dans votre projet à partir de la classe ThisAddIn.

    Private Sub ReplaceParagraphText()
    
        Dim document As Word.Document = Me.Application.ActiveDocument
        Dim firstRange As Word.Range = document.Paragraphs(1).Range
        Dim secondRange As Word.Range = document.Paragraphs(2).Range
    
        Dim firstString As String = firstRange.Text
        Dim secondString As String = secondRange.Text
    
        firstRange.Text = secondString
        secondRange.Text = firstString
    
        firstRange.Select()
        MessageBox.Show(firstRange.Text)
        secondRange.Select()
        MessageBox.Show(secondRange.Text)
    
        firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1)
    
        firstRange.Text = "New content for paragraph 1."
        secondRange.Text = "New content for paragraph 2."
    
        firstRange.Select()
        MessageBox.Show(firstRange.Text)
        secondRange.Select()
        MessageBox.Show(secondRange.Text)
    
        firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
    
        secondRange.Delete()
    
        firstRange.Text = firstString
    
        firstRange.InsertAfter(secondString)
        firstRange.Select()
    End Sub
    
    private void ReplaceParagraphText()
    {
        Word.Document document = this.Application.ActiveDocument;
        Word.Range firstRange = document.Paragraphs[1].Range;
        Word.Range secondRange = document.Paragraphs[2].Range;
    
        string firstString = firstRange.Text;
        string secondString = secondRange.Text;
    
        firstRange.Text = secondString;
        secondRange.Text = firstString;
    
        firstRange.Select();
        MessageBox.Show(firstRange.Text);
        secondRange.Select();
        MessageBox.Show(secondRange.Text);
    
        object charUnit = Word.WdUnits.wdCharacter;
        object move = -1;  // move left 1
    
        firstRange.MoveEnd(ref charUnit, ref move);
    
        firstRange.Text = "New content for paragraph 1.";
        secondRange.Text = "New content for paragraph 2.";
    
        firstRange.Select();
        MessageBox.Show(firstRange.Text);
        secondRange.Select();
        MessageBox.Show(secondRange.Text);
    
        move = 1;  // move right 1
        firstRange.MoveEnd(ref charUnit, ref move);
    
        secondRange.Delete(ref missing, ref missing);
    
        firstRange.Text = firstString;
    
        firstRange.InsertAfter(secondString);
        firstRange.Select();
    }
    

Voir aussi

Tâches

Comment : étendre des plages dans des documents par programmation

Comment : réduire des plages ou des sélections dans des documents par programmation

Comment : insérer du texte dans les documents Word par programmation

Comment : réinitialiser des plages dans les documents Word par programmation

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

Concepts

Paramètres optionnels dans les solutions Office