Publipostage automatique - VBA Excel 2001

Inkospor

XLDnaute Nouveau
Bonjour à tous,

Je me permets d'écrire ce petit sujet aujourd'hui car je rencontre des problèmes dans la programmation de mon code vba déclenché depuis un bouton dans un excel. J'ai cherché un peu partout sur la toile des solutions à mon problème mais impossible d'en appliquer une correctement, de sorte que cela fonctionne.

Pour la petite histoire, je souhaite tout simplement lancé un publipostage automatique depuis Excel vers Word. Malheureusement je rencontre un premier problème: le publipostage fonctionne mais à chaque ouverture de Word, celui-ci me demande de sélectionner la table Excel. Ma première question est donc: est-il possible d'automatiser ce processus également? (de sorte que cela ne me demander en aucun cas de sélectionner la table "Facturation"). Ma deuxième question est: est-il possible de définir dans le code que je souhaite par exemple que uniquement la ligne 2 soit pris en compte pour le publipostage? En espérant être relativement clair dans mes propos, je vous transmets ci-dessous mon code:

Code:
Sub Facturation_Bouton2_QuandClic()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim NomBase As String

    NomBase = "Macintosh HD:Users:jordan:Desktop:Docs:Maman de jour Lydia:Lydia - Compta maman de jour.xls"
    feuilbase = "'`Facturation$`'"
    
    Application.ScreenUpdating = False

    MyAppID = Shell("Macintosh HD:Applications:Microsoft Office 2011:Microsoft Word.app:Contents:MacOS:Microsoft Word", vbHide)
    AppActivate MyAppID
    'Ouverture du document principal Word
    Documents.Open Filename:="Macintosh HD:Users:jordan:Desktop:Docs:Maman de jour Lydia:Lydia - Facturation.docx", ConfirmConversions:=True

    'fonctionnalité de publipostage pour le document spécifié
    With ActiveDocument.MailMerge
    
        'Ouvre la base de données
        .OpenDataSource Name:=NomBase, SQLStatement:="SELECT * FROM " & feuilbase
        'Spécifie la fusion vers l'imprimante
        .Destination = wdSendToPrinter
        .suppressBlankLines = True
            'Prend en compte l'ensemble des enregistrements
            With .DataSource
                .firstRecord = wdDefaultFirstRecord
                .lastRecord = wdDefaultLastRecord
            End With
        'Exécute l'opération de publipostage
        .Execute Pause:=False
    End With
    
    Application.ScreenUpdating = True
    
    'Fermeture du document Word
    ActiveDocument.Close False
   Application.Quit

End Sub

Je vous remercie déjà pour vos réponse et vous souhaite par la même occasion une excellente journée.

Inko.
 

Inkospor

XLDnaute Nouveau
Re : Publipostage automatique - VBA Excel 2001

Bonsoir à tous,

Bon ça avance un peu dans mon code vba. J'ai déjà réussi à supprimer quelques petites erreurs et à faire en sorte que lors de l'ouverture de l'application Word, la selection de la table soit déjà établie sur la table "facturation". Par contre je dois quand meme cliquer sur "ok". Comment faire en sorte que cela soit automatique? Par contre toujours pas trouver de solution pour la sélection de la ligne a publiposter et non toutes les lignes? Pour un début de piste, dois-je utiliser l'option .Mailmerge.DataSource.FirstRecord? , Mailmerge.DataSource.ActiveRecord? etc...

Voici mon code:

Sub Facturation_Bouton2_QuandClic()

NomBase = "Macintosh HD:Users:jordan:Desktop:Docs:Maman de jour Lydia:Lydia - Compta maman de jour.xls"
docWord = "Macintosh HD:Users:jordan:Desktop:Docs:Maman de jour Lydia:Lydia - Facturation.docx"

Application.ScreenUpdating = False
ActiveWorkbook.Save
MyAppID = Shell("Macintosh HD:Applications:Microsoft Office 2011:Microsoft Word.app:Contents:MacOS:Microsoft Word", vbHide)
AppActivate MyAppID
Documents.Open Filename:="Macintosh HD:Users:jordan:Desktop:Docs:Maman de jour Lydia:Lydia - Facturation.docx", ConfirmConversions:=True
ActiveDocument.MailMerge.OpenDataSource NomBase, 4, False, True, False, False, "", "", True, "", "", "Driver={Microsoft Excel Driver (*.xls)};", "SELECT * FROM [Facturation$]"
ActiveDocument.MailMerge.Destination = 1
ActiveDocument.MailMerge.DataSource.FirstRecord = ActiveDocument.MailMerge.DataSource.LastRecord
ActiveDocument.MailMerge.Execute Pause = False
Application.ScreenUpdating = True
ActiveDocument.Close False

End Sub

Merci infiniment pour vos réponses et très bonne soirée.

Inkospor
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 783
Membres
101 817
dernier inscrit
carvajal