Filtrage et publipostage (suite tuto faqword.free.fr)

Le
Ludovic Mauger
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc
matériel. Je souhaite envoyer un courrier à chacun de mes clients avec les
informations sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines de son
parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé cette
méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message
suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de remplacer
la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de filtre
d'enregistrement (cf le point: Dans l'onglet 'Filtrer les enregistrements",
choisir le champ "Nom" (selon notre exemple) égal à : taper un mot
quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y remédier?

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Circé
Le #1603626
Bonjour Ludovic,

Oui, je connais ce problème que je corrige d'une manière un peu
étonnante, en tous les cas j'ai testé x fois cette solution et elle a
toujours fonctionné :

Le champ DATABASE est créé, même s'il ne fonctionne pas. Affiche-le via
Alt+F9.

A la fin du champs, tu dois trouver la fonction SQL "WHERE". Ajoute
simplement un espace supplémentaire avant WHERE.
Appuie sur F9 pour que le champ se mette à jour et reessaie.

Circé
http://faqword.free.fr

Ludovic Mauger a formulé ce mercredi :
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc matériel.
Je souhaite envoyer un courrier à chacun de mes clients avec les informations
sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines de son
parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé cette
méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de remplacer
la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de filtre
d'enregistrement (cf le point: Dans l'onglet 'Filtrer les enregistrements",
choisir le champ "Nom" (selon notre exemple) égal à : taper un mot
quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y remédier?

Merci d'avance


Ludovic
Le #1603623
En effet je n'ai plus ce message d'erreur après avoir ajouté un espace.

En revanche, lorsque je lance ma fusion, j'ai 31 pages qui se créent
(équivalent au nombre de lignes de mon tableau avant filtrage) mais je n'ai
que celles de ma condition. Je dois rater quelque chose dans la procédure.
Je veux bien entendu avoir l'intégralité de mes clients et non pas seulement
celui que j'ai mis dans ma condition "Where".

Merci de ton aide Circé et aux autres aussi si la lumière est en vous :-)




"Circé"
Bonjour Ludovic,

Oui, je connais ce problème que je corrige d'une manière un peu étonnante,
en tous les cas j'ai testé x fois cette solution et elle a toujours
fonctionné :

Le champ DATABASE est créé, même s'il ne fonctionne pas. Affiche-le via
Alt+F9.

A la fin du champs, tu dois trouver la fonction SQL "WHERE". Ajoute
simplement un espace supplémentaire avant WHERE.
Appuie sur F9 pour que le champ se mette à jour et reessaie.

Circé
http://faqword.free.fr

Ludovic Mauger a formulé ce mercredi :
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc
matériel. Je souhaite envoyer un courrier à chacun de mes clients avec
les informations sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines de
son parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé cette
méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message
suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de
remplacer la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de filtre
d'enregistrement (cf le point: Dans l'onglet 'Filtrer les
enregistrements", choisir le champ "Nom" (selon notre exemple) égal à :
taper un mot quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y remédier?

Merci d'avance






Circé
Le #1603616
Bonsoir Ludovic,

Je réponds à nouveau, car a priori, ma réponse n'est pas arrivée...

Ludovic a pensé très fort :
En effet je n'ai plus ce message d'erreur après avoir ajouté un espace.


C'est déjà une bonne chose ! ;)

En revanche, lorsque je lance ma fusion, j'ai 31 pages qui se créent
(équivalent au nombre de lignes de mon tableau avant filtrage) mais je n'ai
que celles de ma condition. Je dois rater quelque chose dans la procédure. Je
veux bien entendu avoir l'intégralité de mes clients et non pas seulement
celui que j'ai mis dans ma condition "Where".


On va recommencer rapidement depuis le début :
1) As-tuè bien créé une base sans doublon (càd avec les noms de tous
tes clients uniques) ?
2) As-tu bien commencé ta fusion en sélectionnant cette base filtrée ?
3) As-tu bien insérer le champ DATABASE depuis la base non filtrée ?

Merci de ton aide Circé et aux autres aussi si la lumière est en vous :-)


En fait, cette méthode est le fruit d'une convergence du cerveau
d'anacoluthe et du mien. Donc, je connais bien cette solution.
Je dois dire quand même que l'idée excellente vient d'anacoluthe... et
j'ai élaboré ensuite la solution pour la faq.
Si anacoluthe passe par là, il aura peut être quelque chose à
ajouter... ;)

Circé
http://faqword.free.r





"Circé"
Bonjour Ludovic,

Oui, je connais ce problème que je corrige d'une manière un peu étonnante,
en tous les cas j'ai testé x fois cette solution et elle a toujours
fonctionné :

Le champ DATABASE est créé, même s'il ne fonctionne pas. Affiche-le via
Alt+F9.

A la fin du champs, tu dois trouver la fonction SQL "WHERE". Ajoute
simplement un espace supplémentaire avant WHERE.
Appuie sur F9 pour que le champ se mette à jour et reessaie.

Circé
http://faqword.free.fr

Ludovic Mauger a formulé ce mercredi :
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc
matériel. Je souhaite envoyer un courrier à chacun de mes clients avec les
informations sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines de son
parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé cette
méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message
suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de
remplacer la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de filtre
d'enregistrement (cf le point: Dans l'onglet 'Filtrer les
enregistrements", choisir le champ "Nom" (selon notre exemple) égal à :
taper un mot quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y remédier?

Merci d'avance








Ludovic
Le #1603613
Merci, je te réponds sur les différents points:

"Circé" news:
Bonsoir Ludovic,

Je réponds à nouveau, car a priori, ma réponse n'est pas arrivée...

Ludovic a pensé très fort :
En effet je n'ai plus ce message d'erreur après avoir ajouté un espace.


C'est déjà une bonne chose ! ;)

En revanche, lorsque je lance ma fusion, j'ai 31 pages qui se créent
(équivalent au nombre de lignes de mon tableau avant filtrage) mais je
n'ai que celles de ma condition. Je dois rater quelque chose dans la
procédure. Je veux bien entendu avoir l'intégralité de mes clients et non
pas seulement celui que j'ai mis dans ma condition "Where".


On va recommencer rapidement depuis le début :
1) As-tuè bien créé une base sans doublon (càd avec les noms de tous tes
clients uniques) ?


Oui, j'ai créé ma base filtrée sans doublons dans une nouvelle feuille, puis
dans un nouveau classeur quand j'ai vu que cela ne fonctionnait pas.
Peut-être que je devrais réessayer depuis que tu m'as donné la première
solution...

2) As-tu bien commencé ta fusion en sélectionnant cette base filtrée ?
Oui, j'ai j'ai pointé dans un premier temps à faire mon publipostage en

appelant la base filtrée

3) As-tu bien insérer le champ DATABASE depuis la base non filtrée ?
J'ai ajouté la base non filtrée et fait mes options de requête sur cette

dernière (filtrer les enregistrement et sélectionner les champs). Une fois
le champ ajouté, j'ajoute l'espace avant "WHERE", ce qui me donne WHERE
((`Nom` = 'Dupont'))" Dupont étant le nom du premier client de ma base. J'ai
essayé de mettre l'intitulé de ma colonne à la place de "Dupont" mais cela
ne donne rien. Je pense que c'est ici que je me trompe.


Merci pour votre site et pour ton aide en tous cas.



Merci de ton aide Circé et aux autres aussi si la lumière est en vous :-)


En fait, cette méthode est le fruit d'une convergence du cerveau
d'anacoluthe et du mien. Donc, je connais bien cette solution.
Je dois dire quand même que l'idée excellente vient d'anacoluthe... et
j'ai élaboré ensuite la solution pour la faq.
Si anacoluthe passe par là, il aura peut être quelque chose à ajouter...
;)

Circé
http://faqword.free.r





"Circé"
Bonjour Ludovic,

Oui, je connais ce problème que je corrige d'une manière un peu
étonnante, en tous les cas j'ai testé x fois cette solution et elle a
toujours fonctionné :

Le champ DATABASE est créé, même s'il ne fonctionne pas. Affiche-le via
Alt+F9.

A la fin du champs, tu dois trouver la fonction SQL "WHERE". Ajoute
simplement un espace supplémentaire avant WHERE.
Appuie sur F9 pour que le champ se mette à jour et reessaie.

Circé
http://faqword.free.fr

Ludovic Mauger a formulé ce mercredi :
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc
matériel. Je souhaite envoyer un courrier à chacun de mes clients avec
les informations sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines de
son parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé cette
méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message
suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de
remplacer la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de filtre
d'enregistrement (cf le point: Dans l'onglet 'Filtrer les
enregistrements", choisir le champ "Nom" (selon notre exemple) égal à :
taper un mot quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y
remédier?

Merci d'avance












Circé
Le #1603611
Ludovic a exposé le 25/04/2007 :


1) As-tuè bien créé une base sans doublon (càd avec les noms de tous tes
clients uniques) ?


Oui, j'ai créé ma base filtrée sans doublons dans une nouvelle feuille, puis
dans un nouveau classeur quand j'ai vu que cela ne fonctionnait pas.
Peut-être que je devrais réessayer depuis que tu m'as donné la première
solution...


C'est possible de mettre la base dans le même classeur, à condition
d'utiliser le protocole OLE (qui peut poser problème pour autre chose)
http://faqword.free.fr/articles.php?lng=fr&pg11

2) As-tu bien commencé ta fusion en sélectionnant cette base filtrée ?
Oui, j'ai j'ai pointé dans un premier temps à faire mon publipostage en

appelant la base filtrée


OK

3) As-tu bien insérer le champ DATABASE depuis la base non filtrée ?
J'ai ajouté la base non filtrée et fait mes options de requête sur cette

dernière (filtrer les enregistrement et sélectionner les champs). Une fois le
champ ajouté, j'ajoute l'espace avant "WHERE", ce qui me donne WHERE ((`Nom`
= 'Dupont'))" Dupont étant le nom du premier client de ma base. J'ai essayé
de mettre l'intitulé de ma colonne à la place de "Dupont" mais cela ne donne
rien. Je pense que c'est ici que je me trompe.


Pourquoi sélectionner Dupont ? Je pensais que tu voulais faire une
fusion pour CHACUN de tes clients... En principe tu ne devrais pas
avoir à faire de sélection sur les clients...

Circé
http://faqword.free.fr


Merci pour votre site et pour ton aide en tous cas.



Merci de ton aide Circé et aux autres aussi si la lumière est en vous :-)


En fait, cette méthode est le fruit d'une convergence du cerveau
d'anacoluthe et du mien. Donc, je connais bien cette solution.
Je dois dire quand même que l'idée excellente vient d'anacoluthe... et j'ai
élaboré ensuite la solution pour la faq.
Si anacoluthe passe par là, il aura peut être quelque chose à ajouter... ;)

Circé
http://faqword.free.r





"Circé"
Bonjour Ludovic,

Oui, je connais ce problème que je corrige d'une manière un peu
étonnante, en tous les cas j'ai testé x fois cette solution et elle a
toujours fonctionné :

Le champ DATABASE est créé, même s'il ne fonctionne pas. Affiche-le via
Alt+F9.

A la fin du champs, tu dois trouver la fonction SQL "WHERE". Ajoute
simplement un espace supplémentaire avant WHERE.
Appuie sur F9 pour que le champ se mette à jour et reessaie.

Circé
http://faqword.free.fr

Ludovic Mauger a formulé ce mercredi :
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc
matériel. Je souhaite envoyer un courrier à chacun de mes clients avec
les informations sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines de
son parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé cette
méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message
suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de
remplacer la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de filtre
d'enregistrement (cf le point: Dans l'onglet 'Filtrer les
enregistrements", choisir le champ "Nom" (selon notre exemple) égal à :
taper un mot quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y remédier?

Merci d'avance














Ludovic
Le #1603610
Le problème est que si je ne mets aucun client dans ma sélection, je me
retrouve avec tous les clients sur la même page. Alors que moi, je veux un
client par page, mais avec l'intégralité de son parc...


"Circé" news:
Ludovic a exposé le 25/04/2007 :


1) As-tuè bien créé une base sans doublon (càd avec les noms de tous tes
clients uniques) ?


Oui, j'ai créé ma base filtrée sans doublons dans une nouvelle feuille,
puis dans un nouveau classeur quand j'ai vu que cela ne fonctionnait pas.
Peut-être que je devrais réessayer depuis que tu m'as donné la première
solution...


C'est possible de mettre la base dans le même classeur, à condition
d'utiliser le protocole OLE (qui peut poser problème pour autre chose)
http://faqword.free.fr/articles.php?lng=fr&pg11

2) As-tu bien commencé ta fusion en sélectionnant cette base filtrée ?
Oui, j'ai j'ai pointé dans un premier temps à faire mon publipostage en

appelant la base filtrée


OK

3) As-tu bien insérer le champ DATABASE depuis la base non filtrée ?
J'ai ajouté la base non filtrée et fait mes options de requête sur cette

dernière (filtrer les enregistrement et sélectionner les champs). Une
fois le champ ajouté, j'ajoute l'espace avant "WHERE", ce qui me donne
WHERE ((`Nom` = 'Dupont'))" Dupont étant le nom du premier client de ma
base. J'ai essayé de mettre l'intitulé de ma colonne à la place de
"Dupont" mais cela ne donne rien. Je pense que c'est ici que je me
trompe.


Pourquoi sélectionner Dupont ? Je pensais que tu voulais faire une fusion
pour CHACUN de tes clients... En principe tu ne devrais pas avoir à faire
de sélection sur les clients...

Circé
http://faqword.free.fr


Merci pour votre site et pour ton aide en tous cas.



Merci de ton aide Circé et aux autres aussi si la lumière est en vous
:-)


En fait, cette méthode est le fruit d'une convergence du cerveau
d'anacoluthe et du mien. Donc, je connais bien cette solution.
Je dois dire quand même que l'idée excellente vient d'anacoluthe... et
j'ai élaboré ensuite la solution pour la faq.
Si anacoluthe passe par là, il aura peut être quelque chose à ajouter...
;)

Circé
http://faqword.free.r





"Circé"
Bonjour Ludovic,

Oui, je connais ce problème que je corrige d'une manière un peu
étonnante, en tous les cas j'ai testé x fois cette solution et elle a
toujours fonctionné :

Le champ DATABASE est créé, même s'il ne fonctionne pas. Affiche-le
via Alt+F9.

A la fin du champs, tu dois trouver la fonction SQL "WHERE". Ajoute
simplement un espace supplémentaire avant WHERE.
Appuie sur F9 pour que le champ se mette à jour et reessaie.

Circé
http://faqword.free.fr

Ludovic Mauger a formulé ce mercredi :
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc
matériel. Je souhaite envoyer un courrier à chacun de mes clients
avec les informations sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines
de son parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé
cette méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message
suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de
remplacer la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de
filtre d'enregistrement (cf le point: Dans l'onglet 'Filtrer les
enregistrements", choisir le champ "Nom" (selon notre exemple) égal à
: taper un mot quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y
remédier?

Merci d'avance


















Anacoluthe
Le #1603609
Bonjour !

'Ludovic' nous a écrit ...
En revanche, lorsque je lance ma fusion, j'ai 31 pages qui se créent
(équivalent au nombre de lignes de mon tableau avant filtrage) mais je n'ai
que celles de ma condition. Je dois rater quelque chose dans la procédure.
Je veux bien entendu avoir l'intégralité de mes clients et non pas seulement
celui que j'ai mis dans ma condition "Where".


Puisque Circé me suggère gentiment d'intervenir ;-)

je pense que vous n'avez pas bien saisi le principe qu'elle a si magistralement
mis en oeuvre dans la FAQ (j'y suis pour très peu quoi qu'elle en dise !)

Vous avez au départ UNE base :
Client1 - matérielA - prix
Client1 - matérielB - prix
Client2 - matérielA - prix
Client2 - matérielB - prix
Client2 - matérielC - prix
etc

Vous voulez une fusion conditionnelle par client:
Client1 vous avez
materielA - prix
MaterielB - prix
----
Client2 vous avez
materielA - prix
MaterielB - prix
materielC - prix

etc

cad regrouper toutes les données par client

Pour obtenir ce résultat il vous faut *DEUX* bases

1) votre base de départ
2) une base simple de vos clients : vous l'obtenez de la 1ère sans doublons

C'est cette DEUXIEME base qui sert de SOURCE de PUBLIPOSTAGE
La PREMIERE base sera utilisée par un champ DATABASE filtré pour
CHAQUE client.

Au total ça donne dans le document principal de publipostage :

{ MERGEFIELD Client } vous avez
{ DATABASE ... SELECT `Materiel`, `prix` FROM ..
WHERE ((`Client` = '{MERGEFIELD Client}')) ... }

L'idée est d'/imbriquer/ le champ de fusion MERGEFIELD dans le critère
de filtre WHERE du champ database.

Si vous avez 5 clients différents, vos 31 enregistrements
seront ventilés dans 5 tableaux DATABASE, un par client, car votre
DEUXIEME base elle ne contient que 5 enregistrements et non 31.

C'est un peu difficile à comprendre au début mais une fois le principe
compris, cette méthode surclasse de très loin toutes les fusions
conditionnelles à base de champs IF.

On peut le dire , c'est génial :-)
Et à ma connaissance ce truc n'est QUE dans la FAQ à Circé.

L'exemple de Circé est volontairement TRES SIMPLE pour bien comprendre.
Il faut bien l'assimiler avant de se lancer dans des fusions plus
complexes encore.

Bon courage !!!

Anacoluthe
« Le talent sans génie est peu de chose. Le génie sans talent n'est rien. »
- Paul VALÉRY

Circé
Le #1603604
Bonsoir Ludovic,

Ludovic avait soumis l'idée :
Le problème est que si je ne mets aucun client dans ma sélection, je me
retrouve avec tous les clients sur la même page. Alors que moi, je veux un
client par page, mais avec l'intégralité de son parc...



Si tu mets "Dupont" dans ta sélection, tu n'auras que Dupont avec tout
son matériel.
Donc, à la place de "Dupont", tu dois reprendre le champ "Client"

Relis bien le post d'anacoluthe (que l'on remercie en passant d'être
venu...)

{ DATABASE ... SELECT `Materiel`, `prix` FROM ..
WHERE ((`Client` = '{MERGEFIELD Client}')) ... }

En fait tu n'avais pas lu mon tuto jusqu'au bout... Car en 7) j'évoque
le problème d'espace avant le WHERE...
et en 8) j'expliquer qu'il faut remplacer toto par le champ...

C'est plus clair ?...

Circé


"Circé" news:
Ludovic a exposé le 25/04/2007 :


1) As-tuè bien créé une base sans doublon (càd avec les noms de tous tes
clients uniques) ?


Oui, j'ai créé ma base filtrée sans doublons dans une nouvelle feuille,
puis dans un nouveau classeur quand j'ai vu que cela ne fonctionnait pas.
Peut-être que je devrais réessayer depuis que tu m'as donné la première
solution...


C'est possible de mettre la base dans le même classeur, à condition
d'utiliser le protocole OLE (qui peut poser problème pour autre chose)
http://faqword.free.fr/articles.php?lng=fr&pg11

2) As-tu bien commencé ta fusion en sélectionnant cette base filtrée ?
Oui, j'ai j'ai pointé dans un premier temps à faire mon publipostage en

appelant la base filtrée


OK

3) As-tu bien insérer le champ DATABASE depuis la base non filtrée ?
J'ai ajouté la base non filtrée et fait mes options de requête sur cette

dernière (filtrer les enregistrement et sélectionner les champs). Une fois
le champ ajouté, j'ajoute l'espace avant "WHERE", ce qui me donne WHERE
((`Nom` = 'Dupont'))" Dupont étant le nom du premier client de ma base.
J'ai essayé de mettre l'intitulé de ma colonne à la place de "Dupont" mais
cela ne donne rien. Je pense que c'est ici que je me trompe.


Pourquoi sélectionner Dupont ? Je pensais que tu voulais faire une fusion
pour CHACUN de tes clients... En principe tu ne devrais pas avoir à faire
de sélection sur les clients...

Circé
http://faqword.free.fr


Merci pour votre site et pour ton aide en tous cas.



Merci de ton aide Circé et aux autres aussi si la lumière est en vous
:-)


En fait, cette méthode est le fruit d'une convergence du cerveau
d'anacoluthe et du mien. Donc, je connais bien cette solution.
Je dois dire quand même que l'idée excellente vient d'anacoluthe... et
j'ai élaboré ensuite la solution pour la faq.
Si anacoluthe passe par là, il aura peut être quelque chose à ajouter...
;)

Circé
http://faqword.free.r





"Circé"
Bonjour Ludovic,

Oui, je connais ce problème que je corrige d'une manière un peu
étonnante, en tous les cas j'ai testé x fois cette solution et elle a
toujours fonctionné :

Le champ DATABASE est créé, même s'il ne fonctionne pas. Affiche-le via
Alt+F9.

A la fin du champs, tu dois trouver la fonction SQL "WHERE". Ajoute
simplement un espace supplémentaire avant WHERE.
Appuie sur F9 pour que le champ se mette à jour et reessaie.

Circé
http://faqword.free.fr

Ludovic Mauger a formulé ce mercredi :
Bonjour,

J'ai une base Excel qui contient plusieurs noms client avec un parc
matériel. Je souhaite envoyer un courrier à chacun de mes clients avec
les informations sur leur parc.

Un publipostage classique me crée x pages pour le même client.

Je souhaite n'avoir qu'une page par client avec toutes les machines de
son parc sur cette page.

Après avoir consulté le site http://faqword.free.fr , j'ai testé cette
méthode :

http://faqword.free.fr/articles.php?lng=fr&pg81

Une fois que je valide l'étape 4 en cliquant sur OK, j'ai le message
suivant:

"Word n'a pas pu ouvrir la source de données" puis "Impossible de
remplacer la selection par la base de données spécifiée".

Après vérification, cela ne se produit pas si je ne mets pas de filtre
d'enregistrement (cf le point: Dans l'onglet 'Filtrer les
enregistrements", choisir le champ "Nom" (selon notre exemple) égal à
: taper un mot quelconque, "toto" par exemple"

J'ai testé avec différentes sources mais ça ne passe pas.

Avez-vous déjà eu ce genre de problème et savez-vous comment y
remédier?

Merci d'avance




















Geo
Le #1603603
Voici la syntaxe exacte de ce que j'ai dans Word:

{ MERGEFIELD "client" }

{ DATABASE d "C:\Documents and Settings\LUM\Mes
documents\Travail\Extractions\Lucie\Publipostage CS\test.xls" c
"Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID­min;Data Source=C:\Documents
and Settings\LUM\Mes documents\Travail\Extractions\Lucie\Publipostage
CS\test.xls;Mode=Read;Extended Properties="HDR=YES;IMEX=1;";Jet OLEDB:System
database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet
OLEDB:Engine Type5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk
Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet
OLEDB:Create System Databaseúlse;Jet OLEDB:Encrypt Databaseúlse;Jet OLEDB:Don't
Copy Locale on Compactúlse;Jet OLEDB:Compact Without Replica Repairúlse;Jet
OLEDB:SFPúlse" s "SELECT `matériel`, `prix` FROM `source` WHERE ((`client` =
'{MERGEFIELD client}'))" h }


Gasp !
Tout ça n'vaut pas une p'tit' macro.

PS J'ai mis "Hors sujet" dans le titre.

--
A+

Ludovic
Le #1603601
Merci pour vos conseils mais ça ne marche toujours pas. J'ai même tenté avec
l'exemple des clients 1,2 matériel A, B ... en vain....

Voici la syntaxe exacte de ce que j'ai dans Word:

{ MERGEFIELD "client" }

{ DATABASE d "C:\Documents and Settings\LUM\Mes
documents\Travail\Extractions\Lucie\Publipostage CS\test.xls" c
"Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID­min;Data
Source=C:\Documents and Settings\LUM\Mes
documents\Travail\Extractions\Lucie\Publipostage
CS\test.xls;Mode=Read;Extended Properties="HDR=YES;IMEX=1;";Jet
OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database
Password="";Jet OLEDB:Engine Type5;Jet OLEDB:Database Locking Mode=0;Jet
OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet
OLEDB:New Database Password="";Jet OLEDB:Create System Databaseúlse;Jet
OLEDB:Encrypt Databaseúlse;Jet OLEDB:Don't Copy Locale on
Compactúlse;Jet OLEDB:Compact Without Replica Repairúlse;Jet
OLEDB:SFPúlse" s "SELECT `matériel`, `prix` FROM `source` WHERE
((`client` = '{MERGEFIELD client}'))" h }









Le champ MERGEFIELD "client" vient de la base filtrée (test filtre.xls).

La selection des champs DATABASE se fait dans la base de départ "source"
(test.xls).



Lorsque je lance ma fusion ainsi, j'ai x pages avec une page par ligne de ma
base... Et je n'ai aucun contenu concernant le parc. Je n'ai que le champ
MERGEFIELD qui s'affiche en fait...



Merci d'avance,



Ludovic



"Anacoluthe"
Bonjour !

'Ludovic' nous a écrit ...
En revanche, lorsque je lance ma fusion, j'ai 31 pages qui se créent
(équivalent au nombre de lignes de mon tableau avant filtrage) mais je
n'ai que celles de ma condition. Je dois rater quelque chose dans la
procédure. Je veux bien entendu avoir l'intégralité de mes clients et non
pas seulement celui que j'ai mis dans ma condition "Where".


Puisque Circé me suggère gentiment d'intervenir ;-)

je pense que vous n'avez pas bien saisi le principe qu'elle a si
magistralement
mis en oeuvre dans la FAQ (j'y suis pour très peu quoi qu'elle en dise !)

Vous avez au départ UNE base :
Client1 - matérielA - prix
Client1 - matérielB - prix
Client2 - matérielA - prix
Client2 - matérielB - prix
Client2 - matérielC - prix
etc

Vous voulez une fusion conditionnelle par client:
Client1 vous avez
materielA - prix
MaterielB - prix
----
Client2 vous avez
materielA - prix
MaterielB - prix
materielC - prix

etc

cad regrouper toutes les données par client

Pour obtenir ce résultat il vous faut *DEUX* bases

1) votre base de départ
2) une base simple de vos clients : vous l'obtenez de la 1ère sans
doublons

C'est cette DEUXIEME base qui sert de SOURCE de PUBLIPOSTAGE
La PREMIERE base sera utilisée par un champ DATABASE filtré pour
CHAQUE client.

Au total ça donne dans le document principal de publipostage :

{ MERGEFIELD Client } vous avez
{ DATABASE ... SELECT `Materiel`, `prix` FROM ..
WHERE ((`Client` = '{MERGEFIELD Client}')) ... }

L'idée est d'/imbriquer/ le champ de fusion MERGEFIELD dans le critère
de filtre WHERE du champ database.

Si vous avez 5 clients différents, vos 31 enregistrements
seront ventilés dans 5 tableaux DATABASE, un par client, car votre
DEUXIEME base elle ne contient que 5 enregistrements et non 31.

C'est un peu difficile à comprendre au début mais une fois le principe
compris, cette méthode surclasse de très loin toutes les fusions
conditionnelles à base de champs IF.

On peut le dire , c'est génial :-)
Et à ma connaissance ce truc n'est QUE dans la FAQ à Circé.

L'exemple de Circé est volontairement TRES SIMPLE pour bien comprendre.
Il faut bien l'assimiler avant de se lancer dans des fusions plus
complexes encore.

Bon courage !!!

Anacoluthe
« Le talent sans génie est peu de chose. Le génie sans talent n'est
rien. »
- Paul VALÉRY



Publicité
Poster une réponse
Anonyme