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

Problème de publipostage conditionnel - exemple classique

4 réponses
Avatar
frederic.renversez
Bonjour à tous,

Je suis en train d'essayer de faire un publipostage conditionnel en
suivant l'exemple donnée chez Microsoft et dans plusieurs posts de ce
newsgroup. Je n'arrive pas à comprendre pourquoi, avec ce fichier de
données :

nom;cadeau
Dupont;Ballon
Dupont;Stylo
Dupont;Montre

Dupord;Echarpe

Duval;Trivial
Duval;Pastis
Duval;Radio
Duval;TV

et ce document principal :

Monsieur {MERGEFIELD nom}{SET lesignet {MERGEFIELD nom}} vous avez
le choix entre les cadeaux suivants :
{MERGEFIELD cadeau}
{NEXTIF {MERGEFIELD nom}={REF lesignet}} {MERGEFIELD cadeau}
{NEXTIF {MERGEFIELD nom}={REF lesignet}} {MERGEFIELD cadeau}
{NEXTIF {MERGEFIELD nom}={REF lesignet}} {MERGEFIELD cadeau}
{SET lesignet ""}

j'obtiens non pas les 3 fiches voulues (un pour chaque personne avec
leurs cadeaux respectifs) mais 10 fiches, une pour chaque ligne,
sachant que la première affiche bien les 3 cadeaux, la deuxième
seulement deux, etc. Tout se passe comme si il balayait
systématiquement les 10 lignes du document et qu'il ne tenait pas
compte de la ligne qui remet le signet à vide (qui, si j'ai bien
compris, permet de sauter la ligne vide et d'attaquer le nom suivant
directement ?). Je travaille avec Word 2002 SP1.

Si quelqu'un a une indication... Merci d'avance.

4 réponses

Avatar
Frédéric Renversez
Bonjour,

Merci pour votre aide, mais malgré les conseils apportés, ça ne marche
toujours pas. C'est à s'arracher les cheveux.

Comme précisé j'ai ajouté des guillemets dans les clauses SET et NEXTIF.
J'ai modifié ma source qui est devenue :

nom;cadeau
Dupont;Ballon
Dupont;Stylo
Dupont;Montre
;
Dupord;Echarpe
;
Duval;Trivial
Duval;Pastis
Duval;Radio
Duval;TV

Effectivement une ligne vide dans un fichier ascii délimité doit plus
ressembler à
ça que ce que j'y avais mis précédemment.

Malgré tout cela ma fusion me donne 10 documents :

1)
Monsieur Dupont vous
avez le choix entre les cadeaux suivants :
Ballon
Stylo
Montre

2)
Monsieur Dupont vous
avez le choix entre les cadeaux suivants :
Stylo
Montre

3)
Monsieur Dupont vous
avez le choix entre les cadeaux suivants :
Montre

4)
Monsieur vous
avez le choix entre les cadeaux suivants :
Echarpe
Echarpe
Echarpe

5)
Monsieur Dupord vous
avez le choix entre les cadeaux suivants :
Echarpe

6)
Monsieur vous
avez le choix entre les cadeaux suivants :
Trivial
Trivial
Trivial

7)
Monsieur Duval vous
avez le choix entre les cadeaux suivants :
Trivial
Pastis
Radio
TV

8)
Monsieur Duval vous
avez le choix entre les cadeaux suivants :
Pastis
Radio
TV

9)
Monsieur Duval vous
avez le choix entre les cadeaux suivants :
Radio
TV

10)
Monsieur Duval vous
avez le choix entre les cadeaux suivants :
TV

Les premiers cadeaux sont décalés (première ligne de fusion) sauf pour
les 4 et 6. Apparemment il passe bien en revue la totalité des
enregistrements.

Y aurait-il encore un problème dans mon fichier de données ? J'ai exactement
le
même problème si il est au format Excel... Je ne vois vraiment pas ce qui
peut poser
problème.

En espérant une illumination...

Merci et à bientôt
Avatar
Frédéric Renversez
Avec ceci (tiré de la doc qui est là
http://support.microsoft.com/default.aspx?scid=kb;en-us;212375 ) :

nom;cadeau;check
Dupont;Ballon;
Dupont;Stylo;
Dupont;Montre;1
Dupord;Echarpe;1
Duval;Trivial;
Duval;Pastis;
Duval;Radio;
Duval;TV;1

et cela (le P représente un retour chariot) :
Monsieur { MERGEFIELD nom }vous avez le choix entre les cadeaux suivants :
{MERGEFIELD cadeau}{set duplicate {if {MERGEFIELD Check}="1" "off"
"on"}}{nextif {mergefield check}=""}{if {duplicate}="on" "P
{MERGEFIELD cadeau}"}{set duplicate {if {MERGEFIELD Check}="1"
"off" "on"}}{nextif {mergefield check}=""}{if {duplicate}="on" "P
{MERGEFIELD cadeau}"}{set duplicate {if {MERGEFIELD Check}="1"
"off" "on"}}{nextif {mergefield check}=""}{if {duplicate}="on" "P
{MERGEFIELD cadeau}"}{set duplicate {if {MERGEFIELD Check}="1"
"off" "on"}}{nextif {mergefield check}=""}{if {duplicate}="on" "P
{MERGEFIELD cadeau}"}

J'obtiens un résultat un peu meilleur (plus de lignes vides) mais toutes les
lignes
sont encore passées en revue et j'ai donc 8 enregistrements.

Et vous disiez que chez vous l'exemple de base fonctionnait sous Word 2002 ?
J'ai franchement dû louper un épisode ou alors je fais un erreur tellement
grossière
que je ne la vois même pas.

Merci en tout cas pour toute précision.


--
Frédéric RENVERSEZ
Ingénieur Développement / SIG
I2G, 03 20 65 03 44

Avatar
Anacoluthe
Bonjour !

"Frédéric Renversez" nous a écrit ...
Avec
http://support.microsoft.com/default.aspx?scid=kb;en-us;212375


C'est encore plus compliqué ! Et il faut faire très attention
aux tests IF (espacer les opérateurs, mettre des guillemets).
Le publipostage Word reste dépendant de la technique des champs
Word dont nous répétons ici qu'elle est archaïque. On s'en sort
souvent bien mieux en structurant la source des données et en
faisant une fusion 'basique'.

Anacoluthe
« L'homme devrait mettre autant d'ardeur à simplifier sa vie
qu'il en met à la compliquer. »
- Henri BERGSON

Avatar
fabienc
frederic.renversez a écrit le 14/08/2003 à 11h49 :
Bonjour à tous,

Je suis en train d'essayer de faire un publipostage conditionnel en
suivant l'exemple donnée chez Microsoft et dans plusieurs posts de ce
newsgroup. Je n'arrive pas à comprendre pourquoi, avec ce fichier de
données :

nom;cadeau
Dupont;Ballon
Dupont;Stylo
Dupont;Montre

Dupord;Echarpe

Duval;Trivial
Duval;Pastis
Duval;Radio
Duval;TV

et ce document principal :

Monsieur {MERGEFIELD nom}{SET lesignet {MERGEFIELD nom}} vous avez
le choix entre les cadeaux suivants :
{MERGEFIELD cadeau}
{NEXTIF {MERGEFIELD nom}={REF lesignet}} {MERGEFIELD cadeau}
{NEXTIF {MERGEFIELD nom}={REF lesignet}} {MERGEFIELD cadeau}
{NEXTIF {MERGEFIELD nom}={REF lesignet}} {MERGEFIELD cadeau}
{SET lesignet ""}

j'obtiens non pas les 3 fiches voulues (un pour chaque personne avec
leurs cadeaux respectifs) mais 10 fiches, une pour chaque ligne,
sachant que la première affiche bien les 3 cadeaux, la deuxième
seulement deux, etc. Tout se passe comme si il balayait
systématiquement les 10 lignes du document et qu'il ne tenait pas
compte de la ligne qui remet le signet à vide (qui, si j'ai bien
compris, permet de sauter la ligne vide et d'attaquer le nom suivant
directement ?). Je travaille avec Word 2002 SP1.

Si quelqu'un a une indication... Merci d'avance.


Je viens d'essayer les solutions que vous venez de me proposer mais rien n'y fait..

Lorsque que je ne tiens pas compte du second paragraphe, il apparaît sur toutes les lettres.

Lorsque que je n'imbrique pas le second paragraphe au premier, Lorsque que le client est douteux, les deux paragraphes s'affichent, mais lorsque que le client est NON DOUTEUX seul le bon paragraphe s'affiche, donc je ne comprends vraiment pas ..