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

Macros et VBA Excel Discussion :

Publipostage Excel->Word et fusion sur nouveau document


Sujet :

Macros et VBA Excel

  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut Publipostage Excel->Word et fusion sur nouveau document
    J'ai un pb de publipostage lancé sur Word depuis Excel.
    Message d'erreur : "Err 5852 => L'objet demandé n'est pas disponible" sur la ligne en rouge
    J'ai bien regardé la procédure décrite ici par SilkyRoad et n'ai pas trouvé de différence notable hormis la fusion, réalisée ici sur un nouveau document au lieu de l'imprimante.
    Sur imprimante, j'ai le même message d'erreur.
    J'ai testé les divers codes proposés par l'aide en ligne : Même punition
    La référence "Microsoft Word 8.0 Object Library" est bien validée
    Le document ouvert est un document principal lié à une base de données Excel.
    Word s'ouvre bien, le document principal aussi.
    Depuis Word la fusion se réalise normalement manuellement ou par macro.
    Les macros dans Excel :
    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
    Sub FusionCourrier()
    Dim Chemin As String
    Dim NomFich As String
        Chemin = "D:\Doc\"
        NomFich = "Voeux 2008.doc"
        Fusion_Publipostage Chemin, NomFich
    End Sub
    
    Sub Fusion_Publipostage(Chemin, NomFich)
    Dim wdApp As Word.Application
    Dim WdDoc As Document
    Dim WdLType As Document
        Set wdApp = CreateObject("word.application")    'ouvre une session Word
        'wdApp.Visible = True 'avec ou sans => message d'erreur sur destination
        Set WdDoc = wdApp.Documents.Open(Filename:=Chemin & NomFich)
        DoEvents
        With WdDoc.MailMerge
            .destination = wdSendToNewDocument 'err 5852 "L'objet demandé n'est pas disponible"
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = 2
            End With
            .SuppressBlankLines = True
            .Execute Pause:=False
        End With
        DoEvents
        Set WdLType = wdApp.ActiveDocument 'Document obtenu par la fusion (quand il sera obtenu...)
        'WdLType.PrintOut
        'WdLType.SaveAs Filename:="D:\doc\Bonne année, bonne santé 2008.doc" ' ^^^ !
        DoEvents
        WdLType.Close False
        DoEvents
        WdDoc.Close False
        DoEvents
        wdApp.Quit
        
        Set WdLType = Nothing
        Set WdDoc = Nothing
        Set wdApp = Nothing
    End Sub
    Comme je n'ai plus que 6 mois pour parvenir à mes fins depuis Excel, je fais appel à votre sagacité bien connue pour me dire ce que j'oublie. Par avance, merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour Joel

    Apparament la base Excel n'est pas ouverte lorsque tu lances le document principal Word par macro.


    Tu peux tester cette adaptation:

    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
    Sub FusionCourrier()
        Dim Chemin As String
        Dim NomFich As String
     
        Chemin = "C:\dossier\"
        NomFich = "documentPrincipal.doc"
     
        Fusion_Publipostage Chemin, NomFich, "laBase.xls"
    End Sub
     
     
    Sub Fusion_Publipostage(Chemin As String, NomFich As String, NomBase As String)
        Dim wdApp As Word.Application
        Dim WdDoc As Document
        Dim WdLType As Document
     
        Set wdApp = CreateObject("word.application") 'ouvre une session Word
        wdApp.Visible = True
        Set WdDoc = wdApp.Documents.Open(Filename:=Chemin & NomFich)
        DoEvents
     
        With WdDoc.MailMerge
            'La base Excel est dans le même répertoire que le doc Word.
            'Les données sont dans la feuille nommée Feuil1.
            .OpenDataSource Name:=Chemin & NomBase, _
            Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & Chemin & NomBase & "; ReadOnly=True;", _
                SQLStatement:="SELECT * FROM [Feuil1$]"
     
            .Destination = wdSendToNewDocument
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = 2
            End With
            .SuppressBlankLines = True
            .Execute Pause:=False
        End With
     
        '
        '...
        '
        '

    si je ne reçois de carte de voeux l'an prochain, je saurai pourquoi ... ;o)
    Je modifierai le tutoriel dès que je le pourrai.


    bonne journée
    michel

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bonne journée à toi aussi, cher Michel.
    Je n'en attendais pas moins de toi mais ma question étant passée en deuxième page, je m'apprêtais à commencer à remplir mes cartes de voeux à la main
    Donc, merci pour ton code. Je le teste tout de suite et je reviens.
    A tout'

    Edit
    Les mains dans les poches ! C'est tout Ok ! Michel.
    Je n'ai jamais pensé qu'en rétablissant la liaison entre le doc et la base de données ça changerait quelque chose... avant que tu n'en parles.
    Un grand merci, je me faisais un de ces soucis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Publipostage Excel vers Word
    Par muchmorehuman dans le forum Word
    Réponses: 2
    Dernier message: 08/12/2014, 15h40
  2. [Toutes versions] Macro avec fusion : enregistrer nouveau document
    Par meliria dans le forum VBA Word
    Réponses: 1
    Dernier message: 07/04/2009, 17h43
  3. Réponses: 1
    Dernier message: 20/09/2008, 08h18
  4. Réponses: 3
    Dernier message: 09/04/2006, 09h10
  5. [VB6][VBA][WORD 2003] Fusion - Publipostage.
    Par L.nico dans le forum VBA Word
    Réponses: 4
    Dernier message: 13/07/2005, 15h00

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