Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


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)) & "  " & Selection.Words(1) & " Para " & i
    y = Len(Selection.Words(1))
    If y = 1 Then Selection.Delete
    
Next para
 
End Sub

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com