Puplipostage automatique

Manu13

XLDnaute Occasionnel
Bonjour le Forum,

Je cherche le moyen de personnaliser un code pour un publipostage....
Dans le code ci-dessous, à l'exécution, j'ai une fenêtre "sélectionner table" y a t'il un moyen de ne pas avoir cette fenêtre? à chaque fois il faut que je coche tables systeme en plus de tables déjà coché......dans option

Une autre chose que je n'arrive pas à obtenir c'est une connexion en feuille de calcul excel via DDE

Code:
Sub Publipostage()
Dim CheminModele$
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Chemin = ActiveWorkbook.Path
    CheminModele = "c:\XXXXX\CDD\"

    ' ***** INFOS IMPORTANTES ***************************************************
    ' Export des données dans un classeur temporaire pour éviter d'avoir
    ' une instance Excel qui reste dans la Liste des Tâches
    ' C'est ce document temporaire qui sera utilisé par Word lors de la fusion et
    ' évitera les inconvénients cités plus haut.
    ' ---------------------------------------------------------------------------
    Sheets(Array("Feuil1")).Select
    Sheets(Array("Feuil1")).Copy
    ActiveWorkbook.SaveAs Chemin & "\Temp.xls"
    ActiveWorkbook.Close savechanges:=False
    ' ***************************************************************************
    'Vérifier si il y a des croix présentes pour procéder au mailing
    Sheets("Feuil1").Activate
    Range([AB2], [AB65536].End(xlUp)).Select
    NbreX = Application.CountIf(Selection, "x")
   
        Exit Sub
    
   
  
     'Ouverture de Word
    
    Dim AppWord As Word.Application
    Set AppWord = New Word.Application


    Application.ScreenUpdating = False

    Set DocWord = AppWord.Documents.Open(CheminModele & "Modele Contrat CDD.docm")
    NomBase = Chemin & "\Temp.xls"
    ' Ouverture de la base de données, passage des paramètres
    ' pour la requête et lancement du Publipostage
    With DocWord.MailMerge
        .OpenDataSource Name:=NomBase, _
                        Connection:="Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & _
                                    NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Feuil1$] WHERE [Modele Contrat CDD] like 'x' OR [Modele Contrat CDD] like 'X'"
        'Spécifie la fusion vers un nouveau document (wdSendToPrinter= Vers l'imprimante)
        .Destination = wdSendToNewDocument
        .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
    ' Activation du doucment principal de Publipostage et fermeture
    DocWord.Activate
    DocWord.Close savechanges:=False
    ' Affichage l'application Word
    AppWord.Visible = True
    Set DocWord = Nothing
    Set AppWord = Nothing
    ' Activation de l'onglet
    Sheets("feuil1").Activate
    ' Effacement du fichier temporaire crée spécialement pour la fusion
    Kill Chemin & "\temp.xls"

Par avance merci
Bonne journée à tous
Manu
 

GeoTrouvePas

XLDnaute Impliqué
Re : Puplipostage automatique

Je n'ai pas tout à fait compris quel est ton soucis exactement. C'est quoi cette fenêtre "Sélectionner table" qui s'ouvre ? Une fenêtre de Word ou d'Excel ?

Si tu as besoin, j'avais créé il y a quelques temps (avec l'aide de quelques forumeurs ^^) une macro permettant de :

- Sélectionner la ligne d'un tableau Excel qui me sert de base au publipostage
- La copier / coller dans une zone temporaire
- Ouvrir le fichier Word à fusionner
- Faire la fusion
- Enregistrer le doc fusionné avec un nom prédéfini
- Fermer word et revenir sur Excel

N'ayant pas cette macro sous forme électronique, je préfèrerais être sur que c'est ce que tu recherches avant de la recopier.
 

Manu13

XLDnaute Occasionnel
Re : Puplipostage automatique

Bonjour GeoTrouvePas,
Merci pour ta réponse, la fenêtre appartient à Word et cette fenêtre si je peux éviter de l'avoir
ensuite pour la base de donnée je ne veux pas fichier source OLE DB, mais feuille excel via DDE

Sinon dans le principe ça correspond tout à fait à ta proposition
Amicalement,
manu
 

GeoTrouvePas

XLDnaute Impliqué
Re : Puplipostage automatique

Désolé pour le retard apporté dans cette réponse mais mon très che FAI traîne pour me réparer ma ligne perso donc pas d'autre accès que celui du boulot.
Donc voici le code que j'utilise pour lancer un publipostage directement à partir d'Excel :

Code:
Sub Publi()

Dim oWdApp As Object
'Lancer Word
Set oWdApp = CreateObject("Word.Application")
With oWdApp
'Afficher Word si nécessaire...
.Visible = True
'Ouvrir le document word
Set Worddoc = oWdApp.Documents.Open("C:\Chemin\Test.doc")
'Fermer le document sans enregistrer les modifications
Worddoc.Close savechanges:=False
'Fermer l'application Word
oWdApp.Quit
End With
End Sub

Dans le fichier word qui servira à la fusion, tu as juste à placer ceci :

Code:
Private Sub Document_Open()
ActiveDocument.MailMerge.Execute Pause:=True
Windows("Lettres1").Activate
ActiveWindow.Close
End Sub

Tu constateras que ce code conssite simplement à ouvrir un fichier word à partir d'Excel. Ce document comportant une macro qui se lance dès le démarrage.

Voilà j'espère que cela te fera une bonne base pour obtenir ce que tu cherches. Bonne journée !

Edit : Je viens de relire mon précédent post et il est vraiment que j'avais dit que ma macro faisait un copier coller des infos à fusionner. Bon petit trou de mémoire de ma part mais cela ne devrait pas être trop compliqué à composer en farfouillant sur le fofo. Si jamais tu n'y arrives pas, je t'aiderai mais pas aujourd'hui car trop chargé ^^
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
142

Statistiques des forums

Discussions
312 490
Messages
2 088 884
Membres
103 982
dernier inscrit
krakencolas