Domaines
RH
Juridique
Compta
Administratif/Moyens Généraux
Communication
Bureautique
Conseils aux débutants
Word
Excel
PowerPoint
Outlook
Access
Publisher
Windows/système
Applications pas à pas
Tests logiciels
Macros VBA
Leçons
Macros Word
Macros Excel
Astuces
Orthographe
Rédaction
Organisation
 
Outils
Ouvrages
Modèles
Macros
 
Anglais
Grammaire avec AnglaisFacile
Leçon gratuite avec AnglaisFacile
Carrière
Gestion de carrière
Fiches métier
Témoignages / vécu
 
 

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

Aller plus loin : la macro Lettre

Maintenant que vous avez assimilé les bases, je vous propose de découvrir la macro Lettre, plus complexe.

N'oubliez pas d'installer le modèle de lettre ci-joint sur votre disque dur et d'adapter le chemin figurant dans la macro à votre configuration...

Le document Word

Créez votre modèle de lettre en plaçant les signets ci-dessous :

adresse (1ère ligne de l'adresse)
date (date du courrier)
genre (salutations de début)
genre2 (salutations de fin)
objet (objet du courrier)
ar (saisissez "Lettre avec accusé réception" et sélectionnez cette phrase avant de définir le signet.
debut (emplacement pour le début du courrier)

Pour la date, utilisez le champ PrintDate qui s'actualisera lors de l'impression de votre lettre.

La macro

Dim nom2
rep2 = InputBox("Veuillez saisir un objet pour votre lettre")
rep = MsgBox("S'agit-il d'une lettre recommandée ?", vbYesNo + vbInformation)
nom2 = Forms!saisie!interlocuteurs.Form!genre & " "
nom2 = nom2 & Forms!saisie!interlocuteurs.Form!Prénom & " " & UCase(Forms!saisie!interlocuteurs.Form!Nom)
adresse2 = UCase(Forms!saisie!societe) & Chr(10) & nom2 & Chr(10) & Forms!saisie!adresse1
adresse2 = adresse2 & Chr(10) & Forms!saisie!adresse2 & Chr(10)
adresse2 = adresse2 & Forms!saisie!cp & " " & UCase(Forms!saisie!ville)
Dim oApp As Object
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
With oApp
.Documents.Add Template:="C:\Documents and Settings\nadège.NADEGE\Application Data\Microsoft\Modèles\lettre2.dot"
With .selection
.GoTo , , , "objet"
.insertafter rep2
.GoTo , , , "adresse"
.insertafter adresse2
.GoTo , , , "genre"
.insertafter Forms!saisie!interlocuteurs.Form!genre
.GoTo , , , "genre2"
.insertafter Forms!saisie!interlocuteurs.Form!genre
If rep <> 6 Then
.GoTo , , , "ar"
.cut
End If
.GoTo , , , "debut"
End With
End With

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

Explications de texte

A son lancement, la macro vous demande de saisir un objet pour votre lettre. Cet objet est placé dans une variable rep2.
Ensuite, il vous est demandé si votre courrier est un courrier recommandé. La valeur de votre réponse est placée dans la variable rep.
Beaucoup plus bas dans le code, vous retrouvez cette même variable (If rep <> 6 Then     .GoTo , , , "ar"     .cut      End If).
Cette instruction permet de tester la réponse de l'utilisateur. Si ce dernier a cliqué sur Non (valeur=6), la mention Lettre recommandée avec AR figurant par défaut sur le courrier est sélectionnée grâce au signet, puis supprimée.

Le reste du code est du "déjà-vu" : les différents éléments de l'adresse sont additionnés dans une variable adresse2.

On se déplace ensuite vers chaque signet (instruction .goto) puis on insère la valeur correspondante (instruction .insertAfter).

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\lettre2.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