Word Mailing avec données provenant d'un enregistrement ouvert dans un formulaire
mailing.zip


Contenu:
Création de la table T_client
Création du formulaire F_client
Création de la requête R_client
Export vers Excel
Test du Bouton de commande
Mailing avec Word

Au niveau de Access:
Un client demande un prospectus. Les informations le concernant (nom, prénom, adresse...) sont enregistrées dans une table T_client de Bdd Access. Un formulaire F_client permet la saisie des données. On veut que les informations concernant le client (qui apparaissent dans le formulaire chargé) soit transmises à un document Word sous forme de mailing. Une requête R_client récupère seulement les champs de l'enregistrement ouvert par le formulaire. (Avec Windows XP, on ne peut pas utiliser cette requête en source de données pour un publipostage avec Word, donc on est obligé de transférer les données dans un fichier excel pour effectuer le publipostage). On transforme cette requête R_client en requête création de table (nouvelle Table T_export). Les données de la table T_export sont exportées vers un fichier excel export.xls (le fichier excel comprend donc un seul enregistrement).

Au niveau de Word:
On crée un fichier mailing.doc lié au fichier excel export.xls
On utilise la fonction publispotage de Word


Création de la table T_client

Champ       Type de données
Id          Numéro auto
Genre       Texte, liste de choix (Mr., Mme)
Prenom      Texte  50 caractères
Nom         Texte  50 caractères
Adresse     Texte 100 caractères
Code postal Texte 10 caractères
Ville       Texte 50 caractères
Telephone   Texte 50 caractères
Date        Date/heure avec valeur par défaut =Date()
Agent       Texte, liste de choix (Pierre, Paul, Jacques)
Création du formulaire F_client
on crée le formulaire avec l'assistant, on y place tous les champs.


Dans le bas du formulaire, on ajoute les boutons de commande: précédent, suivant, nouveau, enregistrer





Création de la requête R_client
On va maintenant créer la requête qui va extraire seulement l'enregistrement affiché par le formulaire.
Il faut laisser le formulaire F_client ouvert (en mode formulaire ou création).
On crée une requête R_client à l'aide de l'assistant. La requête comprend tous les champs de la table. En mode création, on rajoute un critère dans la requête. Clic droit, cliquer sur Créer,

On ouvre le formulaire chargé, on choisit Id, et on double clique sur valeur, de façon à faire apparaître Formulaires![F_client]![Id]
On valide en cliquant sur OK.


Ou ouvre la requête en mode création. On va dans le menu Requête, et on clique sur Requête création de table.


La nouvelle table qui va être créée doit être nommée T_export.

On remarque que l'icône en face de la requête a changé, et correspond maintenant à une requête création de table.


On va tester la requête.
On ouvre le formulaire F_client. on double clique sur la requête R_client.


On obtient un avertissement.

On clique sur Oui, et on obtient une autre information. On clique sur Oui.

On voit maintenant qu'une ligne va être rajoutée dans la table.


Export vers Excel
On ouvre le formulaire F_client en mode création, on désactive l'assistant contrôles.


On crée un nouveau bouton de commande, on affiche ses propriétés.


Dans l'onglet Evénements, dans le champ "Sur clic", on clique sur les 3 petits points.

On choisit le générateur de code.

Une fenêtre Visual Basic s'ouvre.


On écrit le code suivant:
 
Private Sub Commande28_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "R_client"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "T_export", "C:\export.xls", True
Shell "c:\Program Files\Microsoft Office\Office\Winword.exe c:\Lettre.doc", vbMaximizedFocus
End Sub

Voila la description de chaque commande:
Private Sub Commande28_Click(): nom de la commande
DoCmd.SetWarnings False: on élimine les avertissements
DoCmd.OpenQuery "R_client": on ouvre la requête R_client
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "T_export", "C:\export.xls", True: on transfert les enregistrements, par un export, vers un fichier excel. On prend les données dans la table T_export, et on les enregistre dans le fichier export.xls, qui se trouve dans C:\
Shell "c:\Program Files\Microsoft Office\Office\Winword.exe c:\Lettre.doc", vbMaximizedFocus: on donne le chemin d'accès pour ouvrir le programme word, on indique le chemin d'accès du fichier à ouvrir, et on maximise
End Sub: fin de la commande

Test du bouton de commande
On ouvre le formulaire F_client, et on clique sur le bouton de commande. Word s'ouvre, mais il y a un message d'erreur, car le fichier Word Lettre.doc n'est pas encore sur C:\
On peut maintenant vérifier que le fichier export.xls a été créé dans C:\

Mailing avec Word
On ouvre le document Word Lettre.doc (à enregistrer sur C:\) qui va servir de base au publipostage. On clique sur Outils, Publipostage.


Une fenêtre s'ouvre. Dans la zone 1 Document principal, on choisit Lettre type.

On utilise la fenêtre active du document.

On ouvre ensuite la source de données (le fichier export.xls dans C:\)


On sélectionne la feuille entière.
Word indique qu'il n'y a pas de champs de fusion dans le document, il faut les ajouter maintenant.


Lorsque tous les chmps de fusion sont ajoutés, on sauvegarde le document word, on le ferme, et on re-teste le bouton de commande dans Access.

Remarque: lorsqu'on ferme le document Word, Excel se ferme automatiquement. La table T_export est re-créée à chaque fois, et le fichier export.xls est écrasé aussi. Les messages d'erreurs n'apparaissent pas, car on a mis les warnings en false dans la code visual basic.
Retour
MAJ 04.10.2003
Hosted by www.Geocities.ws

1