IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > VBA > Paragraphes
        Comment ajouter un paragraphe dans un document ?
        Comment accéder aux paragraphes d'un document Word ?
        Lorsque je change le texte de mon paragraphe la mise en page change ?
        Pourquoi je n'arrive pas à sélectionner le dernier mot de mon paragraphe ?
        Comment supprimer les lignes vides d'un document ?



Comment ajouter un paragraphe dans un document ?
auteur : Lebeau Olivier
Pour ajouter un paragraphe dans un document, vous avez plusieurs solutions.

Première solution, on ajoute un paragraphe à la collection des paragraphes. Avec cette solution, le paragraphe est ajouté en fin de document.
Directement

ActiveDocument.Paragraphs.Add
Si vous préférez travailler avec l'objet sélection, le nouveau paragraphe est ajouté par rapport au point d'insertion.
Par l'objet selection


Selection.InsertParagraph
Selection.InsertParagraphAfter
Selection.InsertParagraphBefore

Comment accéder aux paragraphes d'un document Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :

L'exemple ci-dessous montre comment boucler sur les paragraphes d'un document Word et les supprimer s'ils débutent par le mot "Test"
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Cible As Paragraph

    Set WordApp = New Word.Application
    WordApp.Visible = True

    Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\Doc1.doc")
    WordDoc.Bookmarks("\StartOfDoc").Select

    For Each Cible In WordDoc.Paragraphs
        Cible.Range.Select
        If Trim(Cible.Range.Words(1)) = "Test" Then Cible.Range.Delete
    Next Cible
Un autre exemple qui supprime les paragraphes de façon conditionnelle :
vba

'boucle sur les 3 premiers paragraphes du document Word :
'si la cellule A1<>1 alors suppression du paragraphe 1
'si la cellule A2<>1 alors suppression du paragraphe 2
'si la cellule A3<>1 alors suppression du paragraphe 3
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Integer

    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Open("C:\monDocument.doc")

    For i = 3 To 1 Step -1
        If Cells(i, 1) <> 1 Then _
           WordDoc.Paragraphs.Item(i).Range.Delete
    Next i

Lorsque je change le texte de mon paragraphe la mise en page change ?
auteur : bidou
Il s'agit là d'une erreur classique. Vous confondez le paragraphe et l'objet Range le désignant. Prenons un exemple :
Dim objDoc As Document, objRange As Range

Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
Set objRange = objDoc.Paragraphs(8).Range
objRange.Text = "Ceci est un nouveau paragraphe"
Ma phrase va s'insérer comme la première phrase du paragraphe suivant, car la marque de paragraphe est inclue dans l'objet Range. La syntaxe correcte est :
Dim objDoc As Document, objRange As Range

Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
Set objRange = objDoc.Paragraphs(8).Range
objRange.Text = "Ceci est un nouveau paragraphe"
objRange.InsertParagraphAfter

Pourquoi je n'arrive pas à sélectionner le dernier mot de mon paragraphe ?
auteur : bidou
L'utilisation directe de la collection Words sur le paragraphe peut être trompeuse.
Dim objDoc As Document, objRange As Range

Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
Set objRange = objDoc.Paragraphs(8).Range
objRange.Words(objRange.Words.Count).Select
Ce code va sélectionner le retour chariot du paragraphe qui stricto sensu est le dernier mot du paragraphe. Accessoirement, l'utilisation de count-1 ne serait pas meilleure puisque selon que la phrase est un point ou non, celui-ci serait sélectionné. Il faut donc faire une vérification arrière
Dim objDoc As Document, objRange As Range

Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
Set objRange = objDoc.Paragraphs(8).Range.Sentences(objDoc.Paragraphs(8).Range.Sentences.Count)
Set objRange = objRange.Words.Last
Do
    Set objRange = objRange.Previous(wdWord, 1)
Loop While StrComp(objRange.Text, vbCrLf, vbBinaryCompare) = 0 Or StrComp(objRange.Text, ".", vbBinaryCompare) = 0
objRange.Select

Comment supprimer les lignes vides d'un document ?
auteur : Lebeau Olivier
Le principe est de parcourir tous les paragraphes.
Mesurer la longueur du premier mot.
Si elle est égale à 1, c'est que la ligne est vide, on la sélectionne, et on la supprime.


Public Sub sautdeligne()
Dim para As Paragraph
Dim i As Integer
Dim y As Integer
 
i = 0
 
 
For Each para In ActiveDocument.Paragraphs
    i = i + 1
    para.Range.Select
    
    Debug.Print Len(Selection.Words(1)) &amp; "  " &amp; Selection.Words(1) &amp; " Para " &amp; i
    y = Len(Selection.Words(1))
    If y = 1 Then Selection.Delete
    
Next para
 
End Sub


Consultez les autres F.A.Q.


  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.