Domaines
RH
Juridique
Compta
Administratif/Moyens Généraux
Communication
Bureautique
Conseils aux débutants
Word
Excel
PowerPoint
Outlook
Access
Publisher
Windows/système
PhotoImpact
Conception web : les bases
Applications pas à pas
Tests logiciels
Macros VBA
Leçons
Macros Word
Macros Excel
Astuces
Orthographe
Rédaction
Organisation
Produits/services malins
Outils
Ouvrages
Modèles
Macros
Liens
Anglais
Grammaire avec AnglaisFacile
Leçon gratuite avec AnglaisFacile
Carrière
Gestion de carrière
Fiches métier
Témoignages / vécu
 
Evénements métier
Echos de presse, comptes-rendus

Echanger

Forums

© Nadège Guilbert
Le contenu de ce site
est régulièrement déposé auprès de la SGDL
Reproduction interdite
sans le consentement
écrit de l'auteur


Imprimer la page

Bureautique > Access

16-Nov-2006

 

 

Récupérer automatiquement des informations d'une fiche Access dans un document Word

La base Access

Pour illustrer notre propos, nous utiliserons une base de données Contacts comportant un sous-formulaire Interlocteurs.

Vous pouvez télécharger le modèle de ce didacticiel ici.
La base fournie s'ouvre directement sur le formulaire concerné.
Passez en mode Création en cliquant sur l'icône .

Le cas échéant, affichez la barre d'outils Boîte à outils en cliquant sur l'icône .
Cliquez ensuite sur l'icône et dessinez un bouton sur le sous-formulaire INTERLOCUTEURS.
Si l'Assistant bouton se déclenche, appuyez simplement sur la touche Echap de votre clavier.

A présent, sélectionnez votre bouton et affichez les Propriétés (F4).
Dans l'onglet Format, champ Légende, saisissez "Envoyer un fax" (ou "Envoyer une lettre"), activez l'onglet Autres, champ Nom et nommez votre formulaire Envoi_Fax.
Activez maintenant l'onglet Evénément, champ Sur clic et cliquez sur ...
Sélectionnez l'option Générateur de code et validez.

Entre les deux lignes, recopiez le code suivant :

Dim nom2
rep = InputBox("Veuillez saisir un objet pour votre fax")
nom2 = Forms!saisie!interlocuteurs.Form!genre & " "
& forms!saisie!interlocuteurs.Form!prénom & " " & UCase(Forms!saisie!interlocuteurs.Form!nom)
Dim oApp As Object
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
With oApp
.Documents.Add Template:="C:\Documents and Settings\nom de votre ordinateur\Application Data\Microsoft\Modèles\fax.dot"
With .selection
.GoTo , , , "a"
.insertafter nom2
.GoTo , , , "télécopie"
If Forms!saisie!interlocuteurs.Form!fax <> "" Then
.insertafter Forms!saisie!interlocuteurs.Form!fax
Else
.insertafter Forms!saisie!fax
End If
.GoTo , , , "société"
.insertafter Forms!saisie!societe
.GoTo , , , "objet"

.insertafter rep
.GoTo , , , "debut"
End With
End With
Exit_word_Click:
Exit Sub
oApp.Activat

J'ai repéré en vert les éléments que vous devrez probablement ajuster.

Explications de texte

Forms!saisie!interlocuteurs.Form!genre : récupère la valeur du champ genresaisie est le nom du formulaire principal et interlocuteurs le nom du sous-formulaire. Le champ genre est donc placé sur le sous-formulaire.
On récupère de la même manière les autres valeurs (Forms!saisie!interlocuteurs.Form!fax pour le numéro du fax, Forms!saisie!societe pour le nom de société placé sur le formulaire principal, forms!saisie!interlocuteurs.Form!prénom pour le récupérer le prénom de l'interlocuteur et Forms!saie!interlocuteurs.Form!nom pour son nom de famille).

le formulaire Fournisseurs et son sous-formulaire contacts

Les variables a, société, objet, debut correspondent aux noms des signets utilisés dans le document Word.
Le signet debut est optionnel et a simplement pour objectif de placer le curseur à l'endroit où l'utilisateur pourra commencer la saisie de son texte. Si vous ne souhaitez pas l'utiliser, supprimer simplement cette ligne.

Dans la syntaxe C:\Documents and Settings\nom de votre ordinateur\Application Data\Microsoft\Modèles\fax.dot vous reconnaissez l'adresse de votre modèle.

 

A son lancement, la macro vous demande de saisir un objet pour votre fax. Cet objet est placé dans une variable rep.
Le genre, prénom et nom sont ensuite "additionnés" grâce à l'opérateur &, chaque élément étant séparé par un espace " ". Le nom de famille est convertit en majuscule grâce à la fonction Ucase().
Pour finir, la totalité de cette chaîne est placée dans une variable nom2.

La macro lance ensuite Word et ouvre le modèle fax.
Le curseur est ensuite placé à chaque emplacement de signet grâce à l'instruction .Goto,,, "nom du signet Word".
Le contenu correspondant de la base Access est alors inséré grâce à l'instruction .InsertAfter Nom_de_l'objet_Access.

Attention ! Vous ne pouvez tester la macro fournie dans ce classeur sans avoir auparavant sauvegardé sur votre disque dur le modèle de fax fourni et modifié la ligne d'instruction C:\Documents and Settings\nom de votre ordinateur\Application Data\Microsoft\Modèles\fax.dot

Haut

Niveau

Pré-requis :

  • disposer du logiciel Word
  • avoir une bonne maîtrise d'Access

 

 

Faire référence à un élément du formulaire :

Forms!Nom_formualaire!
element

 

Faire référence à un élément
du sous-formulaire

Forms!nom_formulaire!
sous_formulaire.Form!element