Vba excel publipostage supprimer une ligne dans word

zephir94

XLDnaute Impliqué
Bonjour à tous,

Depuis Excel je rempli des champs dans un document Word en repérant des balises.
Cela fonctionne sans problèmes.
Je voudrais par un soucis d’esthétique si ma balise est vide supprimer la ligne dans le document Word !

Voici un exemple de programmation que j'utilise pour remplir une balise :

Code:
Sub convoc()
    Dim X$, s, Y$
    Dim u As String
    Dim txt As String
    Dim traitementTexte As Word.Application
    Set traitementTexte = New Word.Application
    
    traitementTexte.Visible = True
    
   
    Dim leDoc As Document
    Set leDoc = traitementTexte.Documents.Open(ActiveWorkbook.Path & "/CONVOC.doc")
    ad = "-"
    dc = "f"
    cd = "( "
    de = ")"
    leDoc.Content.Find.Execute FindText:="<BALISE1>", ReplaceWith:=Feuil10.Range("C2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE2>", ReplaceWith:=Feuil10.Range("E2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE3>", ReplaceWith:=Date, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE4>", ReplaceWith:=Feuil10.Range("I2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE5>", ReplaceWith:=Feuil10.Range("F2").Text, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE6>", ReplaceWith:=Feuil10.Range("G2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE7>", ReplaceWith:=Feuil10.Range("J2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE15>", ReplaceWith:=Feuil10.Range("H2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE10>", ReplaceWith:=Feuil10.Range("K2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE11>", ReplaceWith:=Feuil10.Range("N2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE12>", ReplaceWith:=Feuil10.Range("N2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE14>", ReplaceWith:=Feuil10.Range("Y2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE15>", ReplaceWith:=Feuil10.Range("X2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE16>", ReplaceWith:=Feuil10.Range("S2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE17>", ReplaceWith:=Feuil10.Range("W2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE20>", ReplaceWith:=Feuil10.Range("AA2").Value, Replace:=wdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE30>", ReplaceWith:=Feuil10.Range("C5").Value, Replace:=wdReplaceAll
    'leDoc.Content.Find.Execute FindText:="<BALISE40>", ReplaceWith:=ad, Replace:=wdReplaceAll
X = Application.Trim(Feuil10.Range("C2").Value) 'SUPPRESPACE
 Y = ""
 s = Split(X)
 If UBound(s) > 0 Then _
   Y = UCase(Left(s(1), 1) & "." & Mid(X, Len(s(0) & s(1)) + 3))
 If X <> "" Then X = s(0) & " " & Y
 With leDoc.Content.Find
   .Execute "<BALISE13>", ReplaceWith:=X, Replace:=wdReplaceAll
   If .Found And Y <> "" Then
     .Text = Y
     .Forward = True
     .Execute
     .Parent.Bold = True
   End If
 End With

If Feuil10.Range("U2").Value = "X" Then
leDoc.Content.Find.Execute FindText:="<1>", ReplaceWith:="X", Replace:=wdReplaceAll
Else
leDoc.Content.Find.Execute FindText:="<1>", ReplaceWith:="", Replace:=wdReplaceAll
End If
   If Feuil10.Range("V2").Value = "X" Then
   leDoc.Content.Find.Execute FindText:="<2>", ReplaceWith:="X", Replace:=wdReplaceAll
   Else
   leDoc.Content.Find.Execute FindText:="<2>", ReplaceWith:="", Replace:=wdReplaceAll
   End If
        If Feuil10.Range("W2").Value = "X" Then
        leDoc.Content.Find.Execute FindText:="<3>", ReplaceWith:="X", Replace:=wdReplaceAll
        Else
        leDoc.Content.Find.Execute FindText:="<3>", ReplaceWith:="", Replace:=wdReplaceAll
        End If
  If Feuil10.Range("X2").Value = "X" Then
        leDoc.Content.Find.Execute FindText:="<16>", ReplaceWith:="X", Replace:=wdReplaceAll
        Else
        leDoc.Content.Find.Execute FindText:="<16>", ReplaceWith:="", Replace:=wdReplaceAll
        End If
 If Feuil10.Range("T2").Value = "X" Then
        leDoc.Content.Find.Execute FindText:="<15>", ReplaceWith:="X", Replace:=wdReplaceAll
        Else
        leDoc.Content.Find.Execute FindText:="<15>", ReplaceWith:="", Replace:=wdReplaceAll
        End If
 If Feuil10.Range("W2").Value = "X" Then
        leDoc.Content.Find.Execute FindText:="<17>", ReplaceWith:="X", Replace:=wdReplaceAll
        Else
        leDoc.Content.Find.Execute FindText:="<17>", ReplaceWith:="", Replace:=wdReplaceAll
        End If
 If Feuil10.Range("O2").Value = "X" Then
        leDoc.Content.Find.Execute FindText:="<BALISE40>", ReplaceWith:=ad, Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE41>", ReplaceWith:=dc, Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE42>", ReplaceWith:=cd, Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE43>", ReplaceWith:=de, Replace:=wdReplaceAll
        Else
        leDoc.Content.Find.Execute FindText:="<BALISE40>", ReplaceWith:="", Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE41>", ReplaceWith:="", Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE42>", ReplaceWith:="", Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE43>", ReplaceWith:="", Replace:=wdReplaceAll
        End If
End Sub

Imaginons que je n'ai pas la valeur X dans la feuil10 en O2 je voudrais supprimer par exemple la ligne correspondante à la balise 42 et 43 dans le document Word.

Code:
 If Feuil10.Range("O2").Value = "X" Then
        leDoc.Content.Find.Execute FindText:="<BALISE40>", ReplaceWith:=ad, Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE41>", ReplaceWith:=dc, Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE42>", ReplaceWith:=cd, Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE43>", ReplaceWith:=de, Replace:=wdReplaceAll
        Else
        leDoc.Content.Find.Execute FindText:="<BALISE40>", ReplaceWith:="", Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE41>", ReplaceWith:="", Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE42>", ReplaceWith:="", Replace:=wdReplaceAll
        leDoc.Content.Find.Execute FindText:="<BALISE43>", ReplaceWith:="", Replace:=wdReplaceAll
        End If

Merci par avance pour vos conseils
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
202

Statistiques des forums

Discussions
311 729
Messages
2 081 971
Membres
101 852
dernier inscrit
dthi16088