Excel et Word : publipostage
Le publipostage permet de préparer des courriers personnalisés en injectant dans une lettre type des données contenues dans une base de données.
Cette page est illustrée par un document word et un classeur excel que vous pouvez télécharger sur la page fc-pap-publipostage
L'outil de publipostage de word est très complet et vous trouverez sur la Faq Word de la magicienne Circé M@rina (http://www.faqword.com) tout un chapitre sur ce sujet, beaucoup plus complet et détaillé que ce qui sera présenté ici.
Les exemples sont décrits avec la version 2007 de word et d'excel. Reportez vous à la faqword pour les versions antérieures (ce n'est pas très différent, c'est juste un peu plus convivial dans 2007). Pas de changement pour ces fonctions dans 2010.
La base de données utilisées dans word pour faire le publipostage peut provenir de différentes sources, notamment le carnet d'adresse d'outlook ou un fichier créé depuis word. Nous ne verrons ici que la solution consistant à utiliser une base de données excel.
Nous verrons plusieurs utilisations de la source excel :
- gestion d'une petite base de données pour injecter les informations dans le document word. C'est la base même du publipostage
- ajout de liaisons entre excel et word pour inclure des données fixes. Ca n'a rien à voir avec le publipostage en tant que tel mais c'est bien pratique pour compléter un document.
Nous prendrons l'exemple d'un syndic convoquant des copropriétaires à une assemblée générale.
Comme cet événement se reproduit régulièrement, le syndic souhaite préparer un document word qu'il réutilisera chaque année en ayant à modifier un seul fichier excel.
Toutes les données variables, comme le montant total des charges, la date et le lieu de l'assemblée générale, et bien sur les données concernant chacun des copropriétaires sont donc maintenues dans un seul classeur excel.
Nous allons:
- préparer la base de données gérant la copropriété (très simplifiée !)
- préparer le document word de base
- insérer les champs variables, traiter les conditions éventuelles et choisir le bon format pour les données insérées.
Remarque sur les fichiers de l'exemple
L'archive zip contient deux fichiers : le document word et le classeur excel contenant les données de la fusion. Vous devez décompressez l'archive et noter l'emplacement du classeur excel sur votre disque dur.
Il n'est pas possible dans word de définir le chemin vers la base de données (ici le classeur excel) de façon relative.
Quand vous ouvrirez le document word il cherchera le classeur excel en utilisant le chemin qu'il avait initialement sur mon PC et ne le trouvera donc pas, affichant la fenêtre suivante (variable suivant les versions).

Corrigez le chemin du classeur. Si vous avez une astuce pour enregistrer le chemin du classeur excel en mode relatif par rapport au document word, surtout merci de l'indiquer dans les commentaires ! Je ne crois pas que cela soit possible mais si vous pouvez me démentir j'en serais ravie.
Préparation du classeur excel.
Dans l'exemple retenu, le syndic a probablement besoin de gérer sur des feuilles séparées dans le classeur
- les informations de base desz copropriétaires (n° de lot, nb de millièmes, téléphone, mail...)
- les données financières (versements effectués, dates, solde du compte)
- les données de l'immeuble (coût des charges payées, dépenses à prévoir...)
- la répartition des charges en fonction des millièmes de chacun.
Il est possible avec Query par exemple d'aller chercher les infos du publipostage dans plusieurs feuilles d'un classeur. Mais il est autrement plus simple de préparer dans ce classeur une feuille récapitulative sur laquelle figurent toutes les données qui seront nécessaires au publipostage.
Dans le classeur exemple, il n'y a donc que deux feuilles :
- base : regroupe les données propres à chaque copropriétaire. Dans la vraie vie cette feuille peut donc être alimentée à partir d'autres données.
- data : regroupe les données communes à tous les copropriétaires.
Préparation du document word.
Prenez un document vierge et commencez par écrire une lettre type. Vous pouvez par exemple écrire la lettre pour le premier copropriétaire. Ceci permet je trouve d'ajuster plus facilement les ponctuations et les espaces ainsi que la mise en page globale.

Sélection de la base de données
Fermez votre classeur excel.
Dans word 2007, allez dans l'onglet publipostage et cliquez sur "sélection des destinataires/utiliser la liste existante". Naviguez sur votre ordi pour sélectionner le fichier excel puis la feuille contenant les données (ici "base"). Le principe pour les versons antérieures est proche. Vous trouverez si besoin des explications complémentaires sur la faq word.
En cliquant sur le bouton "modifier la liste des destinataires", vous pouvez depuis word effectuer un choix dans votre base, éliminer par exemple des lignes, filtrer, trier...
Champ variable simple.
J'appelle ici "champ variable simple" (surligné en jaune dans le document) une donnée de la base qui est entrée telle quelle dans le document word. Par exemple le nom et l'adresse des copropriétaires.
Pour entrer le nom, cliquez sur "insérer un champ de fusion" et choisissez civilité puis nom.
NB, word propose des insertions toutes faites pour les adresses. Je préfère pour ma part faire ça champ par champ mais chacun fait à sa façon.
Tester le résultat.
Au fur et à mesure de vos modifications, pour voir ce que donnera la fusion, cliquez sur le bouton "aperçu des résultats" et faites défiler les destinataires avec les flèches à côté.

Format d'affichage
Une question récurrente de celui qui se lance dans le publipostage porte sur le format des données. Excel stocke les dates sous forme de nombre qu'il affiche suivant le choix de l'utilisateur. De même les nombres sont stockés avec toutes leur décimales même si l'utilisateur demande à n'en voir que 2. Quand on transfère les données d'excel vers word, ce sont les données brutes qui sont envoyées. Il faut donc les (re)mettre en forme dans word. Ceci se fait à l'aide de commutateurs. Utilisez ce mot dans l'aide de word pour accéder aux différents formatages possibles ou voyez sur cette page.
Pour ajouter un commutateur à un champ de fusion, il faut basculer l'affichage de word de façon à voir les champs : alt+F9 affiche tous les codes de champs. Si vous ne voulez en voir qu'un seul, faites un clic droit sur le champ et choisissez basculer les codes de champs.
Le champ millièmes se présente comme ceci:
{MERGEFIELD "millièmes"}
Si vous voulez écrire les millièmes en toutes lettres il suffit d'ajouter le commutateur \* cardtext, avant la dernière accolade:
{MERGEFIELD "millièmes"\*cardtext}.
Pour afficher une date:
{MERGEFIELD "date_dernier_versement"\@ "dddd dd MMMM yyyy"} affichera par exemple jeudi 12 mars 2009 (beaucoup d'autres formats possibles, voir l'aide)
Pour afficher un montant avec deux décimales:
{MERGEFIELD "solde"\# "# ##0.00 €"} affichera 1 234.56 €.
Champ conditionnel
L'entête de votre lettre diffère suivant que vous vous adressez à un homme ou à une femme. Suivant le destinataire, il faut donc modifier une partie du texte.
Dans le document word exemple, les parties entrées de façon conditionnelles sont surlignées en vert.
Cliquez sur règle/si...alors...sinon et remplissez les champs.
Vous pouvez aussi le faire manuellement. Pour entrer un champ, il ne faut PAS taper les accolades au clavier. Il faut utiliser la combinaison de touches Ctrl + F9 qui entre la paire d'accolades.
Pour voir le résultat de l'insertion : ctrl+F9.
La syntaxe est la suivante :
{IF condition "texte si vrai" "texte si faux"}. Au contraire d'excel, il n'y a pas de ponctuation entre les arguments.
cela donne par exemple {IF {MERGEFIELD civilité}="M" "Cher Monsieur" "Chère Madame"}
Comment faire s'il y a trois résultats possibles au test conditionnel (ou plus) ? Par exemple, comment tester si une valeur est positive, négative ou nulle ?
Comme dans excel, on imbrique les si :
{IF {MERGEFIELD valeur}= 0 "valeur nulle" {IF {MERGEFIELD valeur}>0 "valeur positive" "valeur négative"}}
N'oubliez pas : si vous tapez les accolades au clavier, ça ne fonctionnera pas. Il faut taper sur ctrl+F9 et ensuite entrer le texte entre les accolades. Idem pour rentrer une paire d'accolades à l'intérieure d'une autre.
On peut évidemment ajouter des commutateurs pour préciser dans chaque cas comment afficher le résultat.
On peut aussi transformer le résultat. Dans l'exemple fourni, si le copropriétaire est débiteur, on préférera écrire "le solde de votre compte est débiteur de 600 euros" plutôt que "votre compte est débiteur de -600 euros" ou" créditeur de -600 euros" ce qui serait ambigu. Dans ce cas, dans le test précédent, on remplacera "valeur négative" par "débiteur de {=ABS({MERGEFIELD valeur}) et on pourra même ajouter un commutateur pour limiter l'affichage à 2 décimales.
Contrairement à excel, word ne met pas à jour automatiquement les champs quand vous les modifiez. F9 permet de raffraichir l'affichage. Pour raffraichir en une fois l'ensemble des champs, Ctrl+A pour sélectionner l'ensemble de la page puis F9.
Voilà, vous avez la base pour écrire vos propres insertions conditionnelles.
Comme dans excel, quand vous mettez au point vos formules, faites le par étape et testez au fur et à mesure : commencez par écrire
{IF condition "texte si vrai" "texte si faux"}
remplacez la condition et testez en mode aperçu des résultats si vous obtenez bien ce que vous attendez. Remplacez alors" texte si vrai" par ce qui est approprié, ajoutez éventuellement vos tests imbriqués et ne mettez les commutateurs que tout à la fin. On a vite fait de s'y perdre entre les accolades et les parenthèses, mieux vaut être méthodique.
Insertion simple avec liaison
Enfin pour finir, quelque chose qui n'appartient pas au publipostage mais qui est bien pratique: Plutôt que de modifier à chaque assemblée générale le document word pour y faire figurer la date de la réunion par exemple, on peut faire la modification dans excel et la reporter dans word (texte' surligné en bleu dans le document exemple). Dans le cas de la date ça n'a pas grand intérêt bien sur mais on pourrait vouloir faire figurer sur la lettre le coût global des charges ou d'autres renseignements qui figurent dans le classeur excel.
Un simple coller avec liaison fait l'affaire. Là encore, après collage, vous pouvez utiliser les commutateurs dans word pour modifier l'affichage du format.
Ceci permet aussi de créer avec une macro dans excel un texte complexe qui sera simplement inséré dans word. Par exemple, préparer la liste de tous les copropriétaires avec les millièmes correspondants.
Attention, quand vous décompressez l'archive exemple sur votre PC le chemin qui reste indiqué dans word est celui du classeur excel sur mon PC. Il faut bien sur ajuster. Là encore, Alt+F9 pour voir le code de champ et le modifier.
Réaliser la fusion
Lorsque qu'en mode aperçu le document correspond à vos attentes, il vous suffit de cliquer sur terminer et fusionner.
Vous avez trois choix possibles.

La première génère un document word unique contenant toutes vos lettres les unes après les autres. Ceci vous permet comme son nom l'indique de modifier ensuite individuellement chaque document si nécessaire. Si vous souhaitez générer automatiquement un document par lettre, il vous faut installer dans word une macro que vous trouverez sur la FAQ Word (indispensable à mon avis).
Vous pouvez aussi bien sur imprimer.
Ou envoyer par mail, pour peu bien sur que votre base de données contienne l'adresse mail.
Petite astuce si vous avez besoin d'ajouter un fichier joint à votre mail ou si vous voulez modifier les mails avant envoi : mettez votre logiciel de messagerie en mode hors ligne ou tout bêtement débranchez votre cable réseau ou éteignez le wifi ! c'est pas très geek mais ça fonctionne très bien :-)
Mot clef associé à cette page : word
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
