Comment : exclure les marques de paragraphe lors de la création de plages par programmationHow to: Programmatically Exclude Paragraph Marks When Creating Ranges

Chaque fois que vous créez un objet Range basé sur un paragraphe, tous les caractères non imprimables, comme les marques de paragraphe, sont inclus dans la plage.Whenever you create a Range object based on a paragraph, all non-printing characters, such as paragraph marks, are included in the range. Vous pouvez insérer le texte d’un paragraphe source dans un paragraphe de destination.You may want to insert the text from a source paragraph into a destination paragraph. Si vous ne voulez pas fractionner le paragraphe de destination en paragraphes distincts, alors vous devez d’abord supprimer la marque de paragraphe du paragraphe source.If you do not want to split the destination paragraph into separate paragraphs, then you must first remove the paragraph mark from the source paragraph. De plus, dans la mesure où des informations de mise en forme sont stockées au sein de la marque de paragraphe, vous ne voulez peut-être pas l’inclure quand vous insérez la plage dans un paragraphe existant.Additionally, since paragraph formatting information is stored within the paragraph mark, you might not want to include this when you insert the range into an existing paragraph.

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.

L’exemple de procédure suivant déclare deux variables de chaîne, extrait le contenu des premier et deuxième paragraphes du document actif, puis intervertit leur contenu.The following example procedure declares two string variables, retrieves the contents of the first and second paragraphs in the active document, and then exchanges their contents. L’exemple illustre ensuite la suppression de la marque de paragraphe de la plage à l’aide de la méthode MoveEnd et l’insertion du texte à l’intérieur du paragraphe.The example then demonstrates removing the paragraph marker from the range by using the MoveEnd method and inserting text inside the paragraph.

Pour contrôler la structure de paragraphe lors de l’insertion de texteTo control paragraph structure when inserting text

  1. Créez deux variables de plage pour les premier et deuxième paragraphes, puis extrayez leur contenu à l’aide de la propriété Text .Create two range variables for the first and second paragraphs, and retrieve their contents using the Text property.

    L'exemple de code suivant peut être utilisé dans une personnalisation au niveau du document.The following code example can be used in a document-level customization.

    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 VSTO au niveau de l’application.The following code example can be used in an application-level VSTO Add-in. Ce code utilise le document actif.This code uses the active document.

    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. Affectez la propriété Text , en intervertissant le texte des deux paragraphes.Assign the Text property, swapping the text between the two paragraphs.

    firstRange.Text = secondString
    secondRange.Text = firstString
    
    firstRange.Text = secondString; 
    secondRange.Text = firstString; 
    
  3. Sélectionnez chaque plage une par une, puis effectuez une pause pour afficher les résultats dans une boîte de message.Select each range in turn and pause to display the results in a message box.

    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 firstRange à l’aide de la méthode MoveEnd pour que la marque de paragraphe ne fasse plus partie de firstRange.Adjust firstRange using the MoveEnd method so that the paragraph marker is no longer a part of 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 affectant une nouvelle chaîne à la propriété Text de la plage.Replace the rest of the text in the first paragraph, assigning a new string to the Text property of the range.

    firstRange.Text = "New content for paragraph 1."
    
    firstRange.Text = "New content for paragraph 1.";
    
  6. Remplacez le texte dans secondRange, en incluant la marque de paragraphe.Replace the text in secondRange, including the paragraph mark.

    secondRange.Text = "New content for paragraph 2."
    
    secondRange.Text = "New content for paragraph 2.";
    
  7. Sélectionnez firstRange et effectuez une pause pour afficher les résultats dans une boîte de message, puis procédez de la même façon avec secondRange.Select firstRange and pause to display the results in a message box, and then do the same with secondRange.

    Étant donné que firstRange a été redéfini pour exclure la marque de paragraphe, la mise en forme d’origine du paragraphe est conservée.Since firstRange was redefined to exclude the paragraph mark, the original formatting of the paragraph is preserved. En revanche, une phrase a été insérée à la place de la marque de paragraphe dans secondRange, supprimant ainsi le paragraphe distinct.However, a sentence was inserted over the paragraph mark in secondRange, removing the separate paragraph.

    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 d’origine des deux plages a été enregistré sous forme de chaînes, donc vous pouvez rétablir le document à son état d’origine.The original contents of both ranges were saved as strings, so you can restore the document to its original condition.

  8. Réajustez firstRange pour inclure la marque de paragraphe à l’aide de la méthode MoveEnd pour une seule position de caractère.Readjust firstRange to include the paragraph mark by using the MoveEnd method for one character position.

    firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
    
    move = 1;  // move right 1
    firstRange.MoveEnd(ref charUnit, ref move); 
    
  9. Supprimez secondRange.Delete secondRange. Cette opération rétablit le paragraphe trois à sa position d’origine.This restores paragraph three to its original position.

    secondRange.Delete()
    
    secondRange.Delete(ref missing, ref missing); 
    
  10. Rétablissez le texte du paragraphe d’origine dans firstRange.Restore the original paragraph text in firstRange.

    firstRange.Text = firstString
    
    firstRange.Text = firstString; 
    
  11. Utilisez la méthode InsertAfter de l’objet Range pour insérer le contenu du paragraphe deux d’origine après firstRange, puis sélectionnez firstRange.Use the InsertAfter method of the Range object to insert the original paragraph-two content after firstRange, and then select firstRange.

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

Exemple de personnalisation au niveau du documentDocument-Level Customization Example

Pour contrôler la structure de paragraphe lors de l’insertion de texte dans des personnalisations au niveau du documentTo control paragraph structure when inserting text in document-level customizations

  1. L’exemple suivant montre la méthode complète d’une personnalisation au niveau du document.The following example shows the complete method for a document-level customization. Pour utiliser ce code, exécutez-le à partir de la classe ThisDocument de votre projet.To use this code, run it from the ThisDocument class in your project.

    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 VSTOVSTO Add-in Example

Pour contrôler la structure de paragraphe lors de l’insertion de texte dans un complément VSTOTo control paragraph structure when inserting text in an VSTO Add-in

  1. L’exemple suivant montre la méthode complète d’un complément VSTO.The following example shows the complete method for an VSTO Add-in. Pour utiliser ce code, exécutez-le à partir de la classe ThisAddIn de votre projet.To use this code, run it from the ThisAddIn class in your project.

    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 aussiSee Also

Comment : étendre des plages dans des Documents par programmation How to: Programmatically Extend Ranges in Documents
Comment : réduire des plages par programmation ou des sélections dans des Documents How to: Programmatically Collapse Ranges or Selections in Documents
Comment : insérer du texte dans des Documents Word par programmation How to: Programmatically Insert Text into Word Documents
Comment : réinitialiser des plages dans Word Documents par programmation How to: Programmatically Reset Ranges in Word Documents
Comment : définir par programme et sélectionner des plages dans des Documents How to: Programmatically Define and Select Ranges in Documents
Paramètres optionnels dans les solutions OfficeOptional Parameters in Office Solutions