Fusion publipostage Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
A
Arno51
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 janvier 2018
Version d'Excel : 2016

Message par Arno51 » 26 septembre 2018, 16:41

Bonjour à vous,

J'ai un petit problème de codage qui me prends la tête concernant le publipostage, je m'explique.

Pour l'instant le code suivant marche mais je ne trouve pas la suite :
Sub puplipostage()
    Dim WApp As Object, WDoc As Object
    Dim NomBase As String

    NomBase = "C:\Users\******\Desktop\test 1.xlsm"

    Set WApp = CreateObject("Word.application")
    WApp.Visible = True
           Application.ScreenUpdating = False
    
    'Ouverture du document principal Word
    Set WDoc = WApp.Documents.Open("C:\Users\*******\Desktop\test d.docx")
 
    'fonctionnalité de publipostage pour le document spécifié
    With WDoc.MailMerge
        'Ouvre la base de données
            .OpenDataSource Name:=NomBase, SQLStatement:="SELECT * FROM [Feuil1$]"
           
    End With
	
         
    Application.ScreenUpdating = True
 
    'Fermeture du document Word
    WDoc.Close False

    WApp.Quit
End Sub

après la ligne :
            .OpenDataSource Name:=NomBase, SQLStatement:="SELECT * FROM [Feuil1$]"
            
je souhaite effectuer la commande "insérer un champ de fusion" sur le fichier word ouvert,

et je souhaite également "mettre à jour les étiquettes" afin que tout les nom soit copier.


Bien évidement j'ai testé d’enregistrer la macro mais lorsque je fais un copier coller du vba word au vba excel cela ne marche plus pour le 1er soucis.
pour le 2ème soucis si je relance le code dans Word la commande n'est pas enregistré.

Si quelqu'un peut me filer un petit coup de pouce ça serait pas mal.

merci d'avance.

Ps : voici le code enregistré sur Word
Sub Macro2()
'
' Macro2 Macro
'
'
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users\sinquina\Desktop\test 1.xlsm", ConfirmConversions:=False, _
        ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\sinquina\Desktop\test 1.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking M" _
        , SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="NOM"
    ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
    ActiveWindow.ActivePane.VerticalPercentScrolled = 0
End Sub

Avatar du membre
fred2406
Membre impliqué
Membre impliqué
Messages : 2'059
Appréciations reçues : 37
Inscrit le : 13 mai 2014
Version d'Excel : O365Pro-2019-2011MAC
Version de Calc : 6.3

Message par fred2406 » 27 septembre 2018, 10:09

Bonjour
personnellement quand je fais un publipostage par vba, le document word modèle possède déjà tous les champs au bon endroit dans le document.... ainsi quand je fais un publipostage (comme tu le ferais à la main) tous les champs se mettent a jour....
je n'ai jamais essayé d’insérer un champ par VBA dans un doc word... car il faudrait pouvoir se positionner dans la feuille.... et je ne suis pas sur que cela soit possible....
Fred
Je ne réponds pas aux M.P. non sollicités.
Ne pas oublier :
:btres:
Fred :O-O:
A
Arno51
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 janvier 2018
Version d'Excel : 2016

Message par Arno51 » 28 septembre 2018, 09:56

Salut,

merci de ta réponse.
le fichier Word est déjà mis en page, la forme des étiquettes sont déjà mise il s'agit juste de la fusion des données qui bloque.
Avatar du membre
pierrep56
Membre impliqué
Membre impliqué
Messages : 1'149
Appréciations reçues : 187
Inscrit le : 18 juin 2014
Version d'Excel : 2016

Message par pierrep56 » 28 septembre 2018, 10:12

Bonjour à tous,

Pour faire un publipostage depuis excel, voici un extrait de code fonctionnel (issu d'une de mes appli) :
    With WDoc.mailMerge
        .OpenDataSource Name:=NomBase, Connection:="Driver={Microsoft Excel Driver (*.xls, *.xlsm)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Feuil1$]"
        '.Destination = wdSendToPrinter 'Si besoin de fusion vers l'imprimante
        .suppressBlankLines = True
        With .DataSource
            .firstRecord = wdDefaultFirstRecord
            .lastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False 'Exécute l'opération de publipostage
    End With
    WDoc.Application.ActiveDocument.SaveAs "C:\chemin\nom_du_fichier.docx"
La dernière ligne enregistre le résultat de la fusion dans un nouveau fichier

Est-ce que ça répond à la question?
Pierre
A
Arno51
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 janvier 2018
Version d'Excel : 2016

Message par Arno51 » 28 septembre 2018, 10:58

Merci de ta réponse.

Je vais essayer de tester ça aujourd'hui mais je ne te promets rien.

edit : testé mais désolé ça ne m'aide pas plus.
j'ai déjà trouvé ce code mais il n’exécute pas ce que je souhaite.
Car je ne souhaite pas enregistrer le fichier juste imprimer et garder le fichier original.

Merci quand même
A
Arno51
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 janvier 2018
Version d'Excel : 2016

Message par Arno51 » 2 octobre 2018, 14:57

Bon merci pour l'aide,

Du coup je laisse tomber. Je laisserai les gens utiliser Word avec un msgbox comprenant les étapes à suivre.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Fusion et publipostage de champ important
    par jpmalb » 6 novembre 2019, 17:52 » dans Excel - VBA
    2 Réponses
    57 Vues
    Dernier message par jpmalb
    7 novembre 2019, 19:12
  • Publipostage
    par fredbenoit » 18 juin 2019, 19:31 » dans Excel - VBA
    6 Réponses
    273 Vues
    Dernier message par fredbenoit
    19 juin 2019, 14:57
  • Publipostage
    par Sassi » 29 juin 2019, 19:36 » dans Office
    4 Réponses
    1502 Vues
    Dernier message par Sassi
    30 juin 2019, 20:12
  • Publipostage
    par lool » 18 décembre 2018, 11:57 » dans Excel - VBA
    2 Réponses
    226 Vues
    Dernier message par lool
    18 décembre 2018, 15:45
  • Publipostage
    par SISSI4676L » 7 avril 2015, 12:22 » dans Office
    2 Réponses
    2384 Vues
    Dernier message par ultra_dell
    27 février 2018, 20:32
  • Publipostage
    par pelerin » 27 novembre 2015, 13:07 » dans Excel - VBA
    7 Réponses
    408 Vues
    Dernier message par jmd
    27 novembre 2015, 16:27