Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PB remplissage de champs de fusion de word à partie de vba d'excel

2 réponses
Avatar
regis.blanchet
Bonjour,


j ai une application sur excel (2000) qui permet de remplir des champs
de fusion d'un document word (2000).


Set wordApp =3D CreateObject("word.application")
wordApp.Visible =3D True
adressa =3D ThisWorkbook.Path
Set wordDoc =3D wordApp.Documents.Open(adressa & "\Projet.doc")

For Each afield In wordDoc.fields
If InStr(1, afield.Code.Text, "Soci=E9t=E9", 1) Then afield.Result.Text =3D
soci
If InStr(1, afield.Code.Text, "Soap1", 1) Then afield.Result.Text =3D
ad1
If InStr(1, afield.Code.Text, "b1", 1) Then afield.Result.Text =3D
prenom(tablo(1))
If InStr(1, afield.Code.Text, "b2", 1) Then afield.Result.Text =3D
prenom(tablo(2))
If InStr(1, afield.Code.Text, "b3", 1) Then afield.Result.Text =3D
prenom(tablo(3))
Next afield
Set wordDoc =3D Nothing
Set wordApp =3D Nothing

Mon probl=E8me c'est que j'ai cr=E9=E9 les diff=E9rentes feuilles
contrairement =E0 un publipostage et donc je souhaite masquer la
deuxieme feuille si le signet b2 n'est pas rempli et la feuille b3 si
b3 est vide.

Pour cel=E0 j'ai ajout=E9 dans mon document word:
{ IF =ABMERGEFIELD b2=BB <> "" "mon texte pour b2" ""}
{ IF =ABMERGEFIELD b3=BB <> "" "mon texte pour b3" ""}

mon probl=E8me c est que quand excel me remplit mon document word mes
feuilles pour b2 et b3 sont toujours masqu=E9es m=EAme si je rentre une
donn=E9e.

Est ce que quelqu'un aurait la solution.
Merci d avance

2 réponses

Avatar
Dom
Bonjour,

Ta syntaxe m'intrigue :
{ IF «MERGEFIELD b2» <> "" "mon texte pour b2" ""}

tu devrais essayer
{ IF { MERGEFIELD b2 } <> "" "mon texte pour b2" ""}

Dom



Bonjour,


j ai une application sur excel (2000) qui permet de remplir des champs
de fusion d'un document word (2000).


Set wordApp = CreateObject("word.application")
wordApp.Visible = True
adressa = ThisWorkbook.Path
Set wordDoc = wordApp.Documents.Open(adressa & "Projet.doc")

For Each afield In wordDoc.fields
If InStr(1, afield.Code.Text, "Société", 1) Then afield.Result.Text > soci
If InStr(1, afield.Code.Text, "Soap1", 1) Then afield.Result.Text > ad1
If InStr(1, afield.Code.Text, "b1", 1) Then afield.Result.Text > prenom(tablo(1))
If InStr(1, afield.Code.Text, "b2", 1) Then afield.Result.Text > prenom(tablo(2))
If InStr(1, afield.Code.Text, "b3", 1) Then afield.Result.Text > prenom(tablo(3))
Next afield
Set wordDoc = Nothing
Set wordApp = Nothing

Mon problème c'est que j'ai créé les différentes feuilles
contrairement à un publipostage et donc je souhaite masquer la
deuxieme feuille si le signet b2 n'est pas rempli et la feuille b3 si
b3 est vide.

Pour celà j'ai ajouté dans mon document word:
{ IF «MERGEFIELD b2» <> "" "mon texte pour b2" ""}
{ IF «MERGEFIELD b3» <> "" "mon texte pour b3" ""}

mon problème c est que quand excel me remplit mon document word mes
feuilles pour b2 et b3 sont toujours masquées même si je rentre une
donnée.

Est ce que quelqu'un aurait la solution.
Merci d avance



Avatar
regis.blanchet
J avais bien tapé sur mon document word

{ IF { MERGEFIELD b2 } <> "" "mon texte pour b2" ""}

pourtant quand b2 est non vide il n affiche toujours pas "mon texte
pour b2"

est ce que c est parce que la valeur de b2 est inscrite dans "mon
texte pour b2"?????