OVH Cloud OVH Cloud

fusion conditionnelle de plusieurs enregistrements

10 réponses
Avatar
flo
Bonjour,

J'ai un problème avec word 2000.
Je fais du publipostage.
J'ai un tableau de données sour excel.
Il regroupe une liste de personne(nom, prénom, date visite médical et heure
visite médical)
Je souhaite par fusion faire un document du type :

jeudi 21 mars :
-9h dupont Paul
-11h Durand Lea
-14h Duval Roger

vendredi 22 mars :
-10h Bazle Léo
-11h Verla Marie

Je veux donc faire une fusion conditionnelle en fonction de la date. J'ai
donc tapé le code suivant :

{MERGEFIELD DATE_VISITE_EXAMEN \@ "dddd d MMMM yyyy"}{SET signetdate
{MERGEFIELD DATE_VISITE_EXAMEN}}

{NEXTIF {MERGEFIELD DATE_VISITE_EXAMEN} = {REF signetdate}}
{MERGEFIELD HEURE_VISITE_EXAMEN}{MERGEFIELD NOM}{MERGEFIELD PRENOM}

Ca ne marche pas. J'obtiens sur trois pages différentes :

jeudi 21 mars :
-9h dupont Paul

jeudi 21 mars :
-11h Durand Lea

jeudi 21 mars :
-14h Duval Roger

pouvez-vous me dire où se situe mon erreur.
Merci d'avance pour votre aide.

10 réponses

Avatar
Anacoluthe
Bonjour !

'flo' nous a écrit ...
{MERGEFIELD DATE_VISITE_EXAMEN @ "dddd d MMMM yyyy"}{SET signetdate
{MERGEFIELD DATE_VISITE_EXAMEN}}
{NEXTIF {MERGEFIELD DATE_VISITE_EXAMEN} = {REF signetdate}}
{MERGEFIELD HEURE_VISITE_EXAMEN}{MERGEFIELD NOM}{MERGEFIELD PRENOM}
Ca ne marche pas. J'obtiens sur trois pages différentes :


1) Utilisez le publipostage Catalogue (ou Répertoire) étape 1
2) Triez votre source Excel par date et heure
et laissez le premier enregistrement vide
(dans le champ Date de cet enregistrement vide
vous pouvez placer 'Liste des rendez-vous' comme titre)
3) Votre document principal contiendra juste 4 lignes :

{ IF { MERGEFIELD "DTE_VIS" } <> SigDTE "¶

{ MERGEFIELD "DTE_VIS" }" }{ SET SigDTE { MERGEFIELD "DTE_VIS" } }¶
{ MERGEFIELD "heure" }h: { MERGEFIELD "Nom" } { MERGEFIELD "prénom" }¶

J'ai écourté vos nom de champs pour tenir sur une ligne ici
et j'ai placé en clair les sauts de paragraphe ¶
Notez que le champ SET est /après/ le champ IF,
que le champ IF contient 2 sauts ¶ /avant/ le champ jour
et qu'il n'y a pas de NEXTIF

Ça marche maintenant ? :-)

C’est toujours un peu galère le publipostage conditionnel
par catégorie, et d’aucuns vous diront qu’il y a des outils
bien plus adaptés que Word pour ce genre d’amusements...

Anacoluthe
« Longue est la route par le précepte,
courte et facile par l'exemple. »
- SÉNÈQUE

Avatar
flo
"Anacoluthe" wrote:

Bonjour !

'flo' nous a écrit ...
{MERGEFIELD DATE_VISITE_EXAMEN @ "dddd d MMMM yyyy"}{SET signetdate
{MERGEFIELD DATE_VISITE_EXAMEN}}
{NEXTIF {MERGEFIELD DATE_VISITE_EXAMEN} = {REF signetdate}}
{MERGEFIELD HEURE_VISITE_EXAMEN}{MERGEFIELD NOM}{MERGEFIELD PRENOM}
Ca ne marche pas. J'obtiens sur trois pages différentes :


1) Utilisez le publipostage Catalogue (ou Répertoire) étape 1
2) Triez votre source Excel par date et heure
et laissez le premier enregistrement vide
(dans le champ Date de cet enregistrement vide
vous pouvez placer 'Liste des rendez-vous' comme titre)
3) Votre document principal contiendra juste 4 lignes :

{ IF { MERGEFIELD "DTE_VIS" } <> SigDTE "¶

{ MERGEFIELD "DTE_VIS" }" }{ SET SigDTE { MERGEFIELD "DTE_VIS" } }¶
{ MERGEFIELD "heure" }h: { MERGEFIELD "Nom" } { MERGEFIELD "prénom" }¶

J'ai écourté vos nom de champs pour tenir sur une ligne ici
et j'ai placé en clair les sauts de paragraphe ¶
Notez que le champ SET est /après/ le champ IF,
que le champ IF contient 2 sauts ¶ /avant/ le champ jour
et qu'il n'y a pas de NEXTIF

Ça marche maintenant ? :-)

C’est toujours un peu galère le publipostage conditionnel
par catégorie, et d’aucuns vous diront qu’il y a des outils
bien plus adaptés que Word pour ce genre d’amusements...

Anacoluthe
« Longue est la route par le précepte,
courte et facile par l'exemple. »
- SÉNÈQUE




Ca ne marche pas.
Je n'ai que le dernier enregistrement comme résultat.

Pourquoi y-a t'il des côtes (") après SigDTE at après { MERGEFIELD "DTE_VIS"
}?

Pourquoi faut'il laisser une page blanche


Avatar
flo



"Anacoluthe" wrote:

Bonjour !

'flo' nous a écrit ...
{MERGEFIELD DATE_VISITE_EXAMEN @ "dddd d MMMM yyyy"}{SET signetdate
{MERGEFIELD DATE_VISITE_EXAMEN}}
{NEXTIF {MERGEFIELD DATE_VISITE_EXAMEN} = {REF signetdate}}
{MERGEFIELD HEURE_VISITE_EXAMEN}{MERGEFIELD NOM}{MERGEFIELD PRENOM}
Ca ne marche pas. J'obtiens sur trois pages différentes :


1) Utilisez le publipostage Catalogue (ou Répertoire) étape 1
2) Triez votre source Excel par date et heure
et laissez le premier enregistrement vide
(dans le champ Date de cet enregistrement vide
vous pouvez placer 'Liste des rendez-vous' comme titre)
3) Votre document principal contiendra juste 4 lignes :

{ IF { MERGEFIELD "DTE_VIS" } <> SigDTE "¶

{ MERGEFIELD "DTE_VIS" }" }{ SET SigDTE { MERGEFIELD "DTE_VIS" } }¶
{ MERGEFIELD "heure" }h: { MERGEFIELD "Nom" } { MERGEFIELD "prénom" }¶

J'ai écourté vos nom de champs pour tenir sur une ligne ici
et j'ai placé en clair les sauts de paragraphe ¶
Notez que le champ SET est /après/ le champ IF,
que le champ IF contient 2 sauts ¶ /avant/ le champ jour
et qu'il n'y a pas de NEXTIF

Ça marche maintenant ? :-)

C’est toujours un peu galère le publipostage conditionnel
par catégorie, et d’aucuns vous diront qu’il y a des outils
bien plus adaptés que Word pour ce genre d’amusements...

Anacoluthe
« Longue est la route par le précepte,
courte et facile par l'exemple. »
- SÉNÈQUE




Ca ne marche pas.
Je n'ai que le dernier enregistrement comme résultat.

Pourquoi y-a t'il des côtes (") après SigDTE at après { MERGEFIELD "DTE_VIS"
}?

Pourquoi faut'il laisser une page blanche


Excusez-moi je voulais dire :
Pourquoi faut'il laisser une ligne blanche au niveau du premier
enregistrement.



Avatar
Anacoluthe
Bonjour !

'flo' nous a écrit ...
Ca ne marche pas.



Mais si ça marche !
Faut juste faire bien attention à ce qui pousse dans les champs :-)

Pourquoi y-a t'il des côtes (") après SigDTE at après { MERGEFIELD "DTE_VIS"
}?
Pourquoi faut'il laisser une ligne blanche au niveau du premier

enregistrement.


Dans les champs placez des guillemets pour délimiter toute expression
pouvant contenir des espaces ou séparateurs.

Dans mon exemple plus haut/bas la proposition 'vraie' de la condition
'SI le jour est différend du précédent' est :
"¶ ¶ { MERGEFIELD "DTE_VIS" }" (sur deux lignes)
à savoir :
un ¶ pour débuter un nouvel enregistrement
un autre ¶ pour sauter une ligne entre chaque jour (c'est plus joli)
et enfin le jour. Le tout est donc placé entre ""

Le premier enregistrement vide est facultatif. C'est juste pour
éviter de perdre la première ligne si le signet est déjà attribué
avant la fusion. Je l'utilise pour faire un titre, mais vous pouvez
vous en passer; dans ce cas commencez par supprimer le signet avant
de faire la fusion.

Une fois qu'on a compris les champs conditionnels, les signets et
les champs de fusion, c'est très simple !
Revenez nous dire que ça marche :-))))

Anacoluthe
« Bienheureux les travailleurs des champs. »
- VIRGILE


Avatar
flo
Bonjour,

Je commence à desespérer. J'ai tapé :

{ IF { MERGEFIELD "DATE_VISITE_EXAMEN" } <> signetdate "¶

{ MERGEFIELD "DATE_VISITE_EXAMEN" }" }{ SET signetdate { MERGEFIELD
"DATE_VISITE_EXAMEN" } }¶
{ MERGEFIELD "HEURE_VISITE_EXAMEN" } { MERGEFIELD "NOM" } { MERGEFIELD
"PRENOM" }¶

Je n'ai pas de 1er enregistrement vide.
Il faut donc que je supprime le signet. Ce que je ne sais pas faire.
J'ai essayé de mettre { SET signetdate ""} mais sans succès. Ce n'est
peut-être pas cela qu'il faut faire.
Je ne maitrise pas la fusion conditionnelle.
Merci d'avance pour votre aide.
Avatar
Anacoluthe
Bonjour !

'flo' nous a écrit ...
Je commence à desespérer. J'ai tapé :
{ IF { MERGEFIELD "DATE_VISITE_EXAMEN" } <> signetdate "¶

{ MERGEFIELD "DATE_VISITE_EXAMEN" }" }{ SET signetdate { MERGEFIELD
"DATE_VISITE_EXAMEN" } }¶
{ MERGEFIELD "HEURE_VISITE_EXAMEN" } { MERGEFIELD "NOM" } { MERGEFIELD
"PRENOM" }¶


Courage, vous y êtes presque !

Je n'ai pas de 1er enregistrement vide.
C'est pas grave, ça marche aussi sans.


Il faut donc que je supprime le signet. Ce que je ne sais pas faire.


Avant de lancer la fusion : Insertion / Signet / Supprimer

J'ai essayé de mettre { SET signetdate ""} mais sans succès. Ce n'est
peut-être pas cela qu'il faut faire.


Ah non surtout pas : à chaque enregistrement vous effaceriez
le signet de l'enregistrement précédent. Comprenez le principe:
à chaque enregistrement, Word reprend votre document principal
et fusionne les champs.
Ici à chaque enregistrement on teste si c'est la même catégorie
que l'enregistrement précédent, on saute une ligne et on inscrit
la catégorie si c'est une nouvelle, puis on réenregistre la
catégorie dans un signet qu'utilisera l'enregistrement suivant.
C'est simple, non ?
Vous /devez/ y arriver ! J'y tiens absolument :-D )))

Anacoluthe
« Bienheureux les travailleurs des champs. »
- VIRGILE

Avatar
flo
J'ai beau essayé et reessayé, mais ça ne marche pas.
J'ai tapé :
{ IF { MERGEFIELD "DATE_VISITE_EXAMEN" } <> signetdate "¶

{ MERGEFIELD "DATE_VISITE_EXAMEN" }" }{ SET signetdate { MERGEFIELD
"DATE_VISITE_EXAMEN" } }¶
{ MERGEFIELD "HEURE_VISITE_EXAMEN" } { MERGEFIELD "NOM" } { MERGEFIELD
"PRENOM" }¶


Je supprime le signet avant chaque essai ( insertionsignetsupprimer)
Lorsque j'execute la fusion, il ne me sort en résultat que mon dernier
enregistrement. Les deux premiers sont ignorés.
Je ne comprends pa spourquoi car j'ai suivi la procédure pas à pas.
Je dois avoir fait une erreur quelque part?
Merci de votre aide.
Avatar
Anacoluthe
Bonjour !

'flo' nous a écrit ...
J'ai beau essayé et reessayé, mais ça ne marche pas.


Noooooonnnnnn que puis-je faire de plus ??????

Pour vous aider et pour l'édification des publiposteurs
je place ici en pièce jointe mon exemple
http://cjoint.com/?cynWZua0ef
(attention téléchargement 14 jours seulement)

L'ensemble a été réalisé avec XL + WD 2000
La source est un fichier Excel trié sur les noms
Le document principal:
- type catalogue
- liaison DDE
- requête tri sur 1) DATE_VISITE et 2) HEURE_VISITE
- pas de première ligne vide
- avant de fusionner effacez le signet si besoin

Voilà !

Et pour vous prouver que ce que j'avance /marche/ ;-)
je copie ci-dessous le résultat que vous obtiendrez
à la fusion :

lundi 21 février 2005
10h : Paul HOCHON
11h : Jean AYMARD
12h : Anna COLUTE

mardi 22 février 2005
9h : Lucie FERRE
10h : Jean PASSE
11h : Marina VOHAL
12h : Anna-Lise DURINE

mercredi 23 février 2005
9h : John DEUF
10h : Guy TARANDALOUZE
11h : Yves REMORD
12h : Jonathan SONTOUR

jeudi 24 février 2005
9h : Vladimir POURLAVAISSEL


Ouf ! Bonne journée à tous

Anacoluthe
« Bienheureux les travailleurs des champs. »
- VIRGILE

Avatar
flo
Ca y est ça marche!!
En fait, j'ai recommencé un document vierge et j'ai refait entièrement le
publipostage. En plus, j'avais mis des côte autour de chaque nom de champ.
Dans votre 1er exemple, la synthaxe était comme cela.
Je vous remercie enormément pour votre aide.
Avatar
Anacoluthe
Bonjour !

'flo' nous a écrit ...
Ca y est ça marche!!


Ahhhhhhhhhhh :-D

Merci de ce retour !

Concernant les guillemets des champs de fusion
la commande 'Insérer un champ de fusion' en place
ou non selon la version Word.

Anacoluthe
« L'espérance ne mène à rien,
la persévérance mène à tout. »
- Jean-François MORIN