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

VBA Access Discussion :

Publipostage WORD avec une requête ACCESS, lancé depuis VBA ACCESS


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Publipostage WORD avec une requête ACCESS, lancé depuis VBA ACCESS
    Bonjour à tous,
    J'ai développé une base de donnée sous ACCESS, et j'utilise des requêtes pour le publipostage sous WORD.

    Lorsque je lance le fichier word depuis l'explorateur, une fenêtre s'affiche me demandant l'autorisation d'exécuter une commande SQL - que je valide - et la fusion s'opère bien.

    Afin d'automatiser ce système, j'ai créé un formulaire sous ACCESS et je souhaite lancer le fichier word depuis un 'clic' sur un bouton. J'ai alors créé un module VBA sous ACCESS, répondant au clic, lançant WORD et ouvrant le fichier en question.
    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
     
    '*******************************************************************
    Public Sub OuvertureFichierWord(StdDocName As String)
    'On Error GoTo Err_OuvertureFichierWord
        Dim oApp        As Object
     
        Dim Répertoire  As String
     
        'répertoire ou se trouvent les fichiers
        Répertoire = CurrentProject.path & "\Modèles de documents"
     
        'Déclaration de l'application WORD
     
        On Error Resume Next
        'Détection de l'application WORD
        Set oApp = GetObject(, "Word.Application")
        'Si Word n'est pas ouvert, une erreur est générée. 
        'Alors création d'une instance de WORD.
        If Err.Number <> 0 Then
            Set oApp = CreateObject("Word.Application")
            Err.Clear           'effacement de l'objet Err
        End If
        oApp.Visible = True
        oApp.ChangeFileOpenDirectory Répertoire
     
        'ouverture du document en ignorant les modifs s'il est ouvert (revert)
        With oApp.Documents
            .Open fileName:=StdDocName, Revert:=True
        End With
     
     
    Exit_OuvertureFichierWord:
        Exit Sub
     
    End Sub
    '*******************************************************************
    ... le fichier s'ouvre, mais la fusion n'est pas réalisée.
    Le résultat est le même qu'en lançant le fichier depuis l'explorateur et en ne validant pas la commande SQL.

    Que faire ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour et Bienvenue,

    Pour aider à te répondre il aurait été bien d'indiquer une partie de ton code. Par déduction tu dois t'arrêter à l'ouverture de ta lettre type:

    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
    Dim wdApp As Word.Application
     
    ' Démarrer Word
    Set wdApp = CreateObject("Word.Application")
    With wdApp
        .Visible = True
     
        ' Ouvrir la lettre type
        .Documents.Open "C:\TonChemin\TaLettreType.Doc"
     
        ' Ce qu'il doit te manquer
        ' Diriger le publispotage vers un nouveau document
        .ActiveDocument.MailMerge.Destination = wdSendToNewDocument
     
        ' Lancer la fusion
        .ActiveDocument.MailMerge.Execute
    End With
     
    ' Fermer et libérer les objets
    Set wdApp = Nothing
    Heureux-Oli nous a fait un travail remarquable sur le sujet :
    http://heureuxoli.developpez.com/publipostage/

    Cordialement.

    PS : A moins que tu ne fasses ce publipostage à l'aide de l'instruction VB Shell
    Ne pas oublier dans les références d'activer Microsoft Word 11.0 Object Library
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Merci à francishop, mais ...
    Bonjour,

    Tout d'abord merci pour l'intérêt que tu portes à man problème.

    J'ai ajouté la partie "code" (je ne sais pas ajouter une fenêtre "code" dans ce message ...)

    Cependant, mon souhait est d'utilser WORD comme outil d'affichage d'un document type, avec les données de l'enregistrement sélectionné sous ACCESS.
    Par la suite, l'opérateur lancera l'impression du document depuis la fenêtre WORD (après avoir vérifié la fusion).

    L'opérateur devra sélectionner un autre enregistrement sous ACCESS pour poursuivre etc.

    Il ne s'agit pas de fusionner xx enregistrements vers une imprmante ou un fichier, mais d'utiliser WORD pour créer un document "type".

    A nouveau merci.

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/03/2015, 22h39
  2. [AC-2010] Formule matricielle lancée depuis VBA access vers excel
    Par debdev dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/07/2013, 08h49
  3. Remplir une zone de liste Excel avec une requête Access (problème)
    Par Tontorise dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 30/05/2007, 14h26
  4. [VB.NET/Access] Problème avec une requête d'insertion
    Par Bladinou dans le forum Accès aux données
    Réponses: 8
    Dernier message: 29/05/2007, 18h06
  5. Access sql : puis-je faire çà avec une requête ?
    Par kikidrome dans le forum Langage SQL
    Réponses: 10
    Dernier message: 15/11/2006, 08h20

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