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 :
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.
Merci par avance pour vos conseils
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: