IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Publipostage, automatisation d’une lettre type (Word 2003)


Sujet :

Contribuez

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : Luxembourg

    Informations forums :
    Inscription : Septembre 2007
    Messages : 120
    Points : 257
    Points
    257
    Par défaut Publipostage, automatisation d’une lettre type (Word 2003)
    Bonjour,

    Pour ceux que cela intéresse :

    Il s’agit, à partir d’une base de données Access 2003, d’ouvrir une lettre type contenant des champs connectés à la base de données en faisant appel à une requête de base de données ou à une requête dynamique.

    Dans le menu Outils/Références de Visual Basic, activez la référence Microsoft Word 11.0 Object Library.

    Saisir le Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub AutoPublipostage()
     
       'Chemin d'accès au document Word de publipostage
       Const LettreType = "C:\Mes_Documents\Lettre_Type.doc"
     
       'Déclaration de la variable de l'Objet Word
       Dim WdLettreType As Word.Application
     
          'Partie publipostage
          Set WdLettreType = New Word.Application
             With WdLettreType
                'Ouvrir lettre type
                   .Documents.Open LettreType
                'Lier la lettre type à la source de données Access
                   .ActiveDocument.MailMerge.OpenDataSource _
                   Name:=CurrentProject.FullName, _
                   SQLStatement:="SELECT * FROM [RqtLettreType]" ‘Ou requête dynamique entre guillemet
                'La fusion doit se faire sur un nouveau document
                   .ActiveDocument.MailMerge.Destination = wdSendToNewDocument
                'Exécuter la fusion
                   .ActiveDocument.MailMerge.Execute
             End With
     
          Set WdLettreType = Nothing
       MsgBox "Publipostage terminé !", vbOKOnly + vbInformation, "Fusion"
     
    End Sub
    Bonne soirée

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    en complément....pour splitter en autant de documents différents que d'enregistrements..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    '****************************************************************************
    '*** debut de la procedure de fractionnement du document unique de fusion ***
    '****************************************************************************
     
    ' REM : procedure par copier-coller.
    '       selection via les section
     
        oApp.Browser.Target = wdBrowseSection
        For i = 1 To ((oApp.ActiveDocument.Sections.Count) - 1)
        ActivDoc1.Bookmarks("\Section").Range.Copy 'copie la section
     
    '**********************************************************
    '*** diff selon module - mise en page de la destination ***
    '**********************************************************
     
        oApp.Documents.Add Template:=(Application.CurrentProject.Path & "\Doc\modelettre.dot")
     
    '------------------------------------------
    ' suite de la procédure de fractionnement |
    '------------------------------------------
     
        oApp.Selection.Paste 'colle la section
        oApp.Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
        oApp.Selection.Delete Unit:=wdCharacter, Count:=1
        oApp.ChangeFileOpenDirectory Rep
        docnum = docnum + 1
     
     Nomfichier = prefixe & Madate & Extension & ".doc" 'definition du nom de fichier
     
        oApp.ActiveDocument.SaveAs Filename:=Nomfichier 'enregistrement suivant la norme
     
        oApp.ActiveDocument.PrintOut Background = False, , , , , , , 2
        oApp.ActiveDocument.Close
        oApp.Browser.Next
     
    Extension = Format(Extension + 1, "0000") 'ajout de 1 au compteur de document pour la ref suivante
     
     
        Next i
     
    '*** fin de la procédure de fractionnement ***
    '---------------------------------------------

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef d'Entreprise
    Inscrit en
    Novembre 2020
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef d'Entreprise
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2020
    Messages : 65
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Ce code pourrait m'être très utile !
    Mais je suis novice et ne comprends pas bien comment l'utiliser ...
    Je dois créer un module? et ensuite faire appel à ce module via un bouton dans un Formulaire?
    Comment lier ma requête contenant toutes les infos à publiposter?
    Et enfin est-il possible (sait-on jamais...) d'automatiser aussi l'impression du word créé?

    d'avance, Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 253
    Points : 6 545
    Points
    6 545
    Par défaut
    Salut
    Citation Envoyé par Matthieu85 Voir le message
    ... Mais je suis novice et ne comprends pas bien comment l'utiliser ...
    Peut-être commencer par lire la littérature dédiée au VBA pour MsOffice. Il y en a à profusion sur DEV ou ailleurs.
    Citation Envoyé par Matthieu85 Voir le message
    Je dois créer un module? et ensuite faire appel à ce module via un bouton dans un Formulaire?
    C'est une Sub(), donc on peut la placer dans un module standard ou dans le module d'un formulaire et l'appeler avec Call dans un évènement surClick()
    Citation Envoyé par Matthieu85 Voir le message
    Comment lier ma requête contenant toutes les infos à publiposter?
    Code du Post#1 en ligne 17 la source du publipostage
    Citation Envoyé par Matthieu85 Voir le message
    Et enfin est-il possible (sait-on jamais...) d'automatiser aussi l'impression du word créé?
    Code du Post#1 en ligne 19 la commande lance la création d'un nouveau document pour la fusion. Si vous voulez une impression directe remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .ActiveDocument.MailMerge.Destination = wdSendToNewDocument
    par
    .ActiveDocument.MailMerge.Destination =  wdSendToPrinter
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2014, 19h20
  2. [Toutes versions] lien avec lettres types WORD
    Par jomor dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2012, 18h18
  3. Publipostage avec delphi 2009 et word 2003
    Par yannba dans le forum Langage
    Réponses: 0
    Dernier message: 03/04/2010, 13h22
  4. Publipostage tableau dans Lettre type
    Par cbleas dans le forum IHM
    Réponses: 0
    Dernier message: 02/04/2008, 09h45
  5. [VB6][VBA][WORD 2003] Fusion - Publipostage.
    Par L.nico dans le forum VBA Word
    Réponses: 4
    Dernier message: 13/07/2005, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo