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

texte conditionné dans une fusion

4 réponses
Avatar
Wlad69
Bonjour,

Je vous solicite de nouveau, par rapport =E0 une autre question pour
laquelle je n'ai pas encore trouv=E9 de solution.

Je suis charg=E9 de modifier une s=E9rie de mod=E8les de fusion dans lequel
se trouve r=E9p=E9ter des kyrielles de ligne du genre
{IF {MERGEFIELD Code} =3D "L001" {AUTOTEXT L001}}
{IF {MERGEFIELD Code} =3D "L002" {AUTOTEXT L002}}
{IF {MERGEFIELD Code} =3D "H001" {AUTOTEXT H001}}
etc...

=E7=E0 fonctionne mais il y a plus d'une cinquantaine de ligne comme cela,
et je trouve que :
1=2E c'est pas facile =E0 maintenir, c'est compl=E8tement ilisible
2=2E c'est pas tr=E8s efficace
3=2E Si la table des codes change, il faudra encore revenir sur tous les
documents dans lesquels cette s=E9quence est pr=E9sente.

J'ai essay=E9 de remplacer par
{AUTOTEXT {MERGEFIELD Code}}
Ce qui renvoye bien un r=E9sultat ... mais pas le bon !

J'ai essay=E9 aussi
{SET CodeLie {MERGEFIELD Code}}
{AUTOTEXT {MERGEFIELD CodeLie}}

Quelqu'un peut-il m'expliquer pourquoi cela ne fonctionne pas ?
Et mieux me donner une solution qui fonctionne ...

D'avance merci =E0 tous.

Cordialement,

Wlad69

4 réponses

Avatar
Anacoluthe
Bonjour !

'Wlad69' nous a écrit ...
J'ai essayé de remplacer par
{AUTOTEXT {MERGEFIELD Code}}
Ce qui renvoye bien un résultat ... mais pas le bon !
J'ai essayé aussi
{SET CodeLie {MERGEFIELD Code}}
{AUTOTEXT {MERGEFIELD CodeLie}}
Quelqu'un peut-il m'expliquer pourquoi cela ne fonctionne pas ?


Ça ne fonctionne pas parce que le champ AUTOTEXT ne passe pas la fusion.

En matière de fusion il y a :
- les champs qui 'passent' la fusion comme INCLUDETEXT , LINK etc
ce qui veut dire qu'on retrouve le champ dans le document de fusion
- les champs qui ne 'passent pas' la fusion comme IF , SET etc
ce qui veut dire qu'ils sont 'déchampés' AVANT la fusion, certains
sans mise à jour comme AUTOTEXT.

Si vous souhaitez continuer à utiliser les AUTOTEXT, il faudra
se contenter de la série des IF. Généralement la solution est
ailleurs : vous écrivez un simple { MERGEFIELD Code } et la
source de données relationnelle aura fait le reste.

Bien souvent ici le drame du publipostage tient à ce qu'on veut que
Word TRAITE les données, alors que le but n'est que de fusionner
des données dans des documents de fusion. Il suffit d'utiliser
les bons outils de gestion de bases de données et de fournir
les bonnes données à Word...

Anacoluthe
« Dans l’impossible fusion la confusion. »
- Jacques LACAN

Avatar
JièL
Hello

Il suffit d'utiliser
les bons outils de gestion de bases de données et de fournir
les bonnes données à Word...


des clous et un marteau en bref ! ;-))))))

--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-) http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là : http://faq.outlook.free.fr/index.php
Les stats de CDO : http://faq.outlook.free.fr/cdo/

Avatar
Anacoluthe
Re !

Si vous souhaitez continuer à utiliser les AUTOTEXT, il faudra
se contenter de la série des IF.


Je viens d'avoir une idée, suite à une autre ficelle sur les
événements de publipostage : avec WD2002 ou + , on pourrait
mettre à jour l' AUTOTEXT à chaque enregistrement à l'aide
de l'événement MailMergeBeforeRecordMerge

Private Sub wdApp_MailMergeBeforeRecordMerge(ByVal Doc As Document, _
Cancel As Boolean)
Doc.Fields.Update
End Sub

J'ai testé : ça marche !
Un { AUTOTEXT { Mergefield Code } } donne à la fusion le texte brut
de chaque insertion automatique nommée 'code'

Ça ne retire rien à ce que je pense sur l'intérêt d'Access, Excel
ou autres outils idoines pour traiter les données en amont de Word ;-)

Anacoluthe
« Dans l’impossible fusion la confusion. »
- Jacques LACAN

Avatar
Wlad69
On 13 mar, 21:11, Anacoluthe wrote:
Re !

Si vous souhaitez continuer à utiliser les AUTOTEXT, il faudra
se contenter de la série des IF.


Je viens d'avoir une idée, suite à une autre ficelle sur les
événements de publipostage : avec WD2002 ou + , on pourrait
mettre à jour l' AUTOTEXT à chaque enregistrement à l'aide
de l'événement MailMergeBeforeRecordMerge

Private Sub wdApp_MailMergeBeforeRecordMerge(ByVal Doc As Document, _
Cancel As Boolean)
Doc.Fields.Update
End Sub

J'ai testé : ça marche !
Un { AUTOTEXT { Mergefield Code } } donne à la fusion le texte brut
de chaque insertion automatique nommée 'code'

Ça ne retire rien à ce que je pense sur l'intérêt d'Access, Excel
ou autres outils idoines pour traiter les données en amont de Word ;-)

Anacoluthe
« Dans l'impossible fusion la confusion. »
- Jacques LACAN


Bonjour,

Merci pour cette solution, mais compte tenu de la dimension de la
structure dans laquelle je travaille; négocier le changement de
version ne sera pas chose facile.

J'ai expérimenté une solution à base de INCLUDETEXT qui fonctionne.
un truc du genre
Un document nommé "liste libellés.doc" dans lequel chaque libellé à
insérer est marqué par un signet. J'ai fait une macro pour automatiser
la création de la cinquantaine de signet.
Ensuite j'insère dans le document principal :
{INCLUDETEXT "C:Cheminliste libellés.doc" {MERGEFIELD Code}}

Ce qui me gêne dans cette solution c'est que le champ subsite dans le
document généré. D'où l'autre ficelle sur l' "exécution automatiq ue
d'une macro lors de la fusion".

Pour en revenir au fond du problème, effectivement, je chercher à
pallier l'insuffisance de données dans la source de fusion. En
replaçant les choses dans ce contexte, je me demande si un champ
DATABASE ne serait pas plus pratique. Qu'en penser vous ?
Quelle type de base me conseillez-vous ? Un fichier Excel peut-il
convenir ?

Cordialement,

Wlad69