Voila un exemple, de publipostage multiple, avec du code VBA Excel et Word, que j'aimerais corriger.
Option Explicit '--------------------------------- Sub test() Dim R As Range Set R = ThisDocument.Tables(1).Range R.Cells.VerticalAlignment = wdCellAlignVerticalCenter R.Paragraphs.Alignment = wdAlignParagraphCenter End Sub '--------------------------------- Option Explicit Sub Impression() PreparerPlages Publipostage End Sub Sub PreparerPlages() ' ' PublipostageTest Macro ' Code pour un publipostage multiple ' Dim DerLg As Long With Feuil1 DerLg = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("A1:P" & DerLg).Name = "Base" [Base].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "AA1:AA2"), CopyToRange:=Range("R1:X1"), Unique:=True .Range("R1:Y" & .UsedRange.Rows.Count).RemoveDuplicates Columns:=1, Header:=xlYes '.Range(.[R1], .Cells(.Rows.Count, 25).End(xlUp).Row).Name = "Extraction" .Range("R1:Y" & .UsedRange.Rows.Count).Name = "Extraction" MsgBox "Extraction : " & Range("extraction").Address End With End Sub Sub Publipostage() 'Ajouter la référence suivante à partir du menu 'de la fenêtre de l'éditeur de code 'barre des menus / outils / références 'référence à cocher : "Microsoft Word xx Object Library" Dim Wd As Word.Application, WdDoc As Word.Document Dim Chemin As String, Fichier As String, Source As String 'En supposant que le document Word est dans le 'même répertoire que le fichier Excel ouvert Chemin = ThisWorkbook.Path & "" 'Fichier = "Décharge.doc" Fichier = "PublipostageMultiple (v002).docm" 'Chemin & Nom du fichier Excel où est le tableau des données 'Ce fichier est présumé ouvert Source = ThisWorkbook.FullName 'Création d'une instance de Word Set Wd = CreateObject("Word.Application") 'Rendre visible ou nom l'application Word Wd.Visible = True ' or False 'Ouverture du document pour la publication ' Set WdDoc = Wd.Documents.Open(Chemin & Fichier) '----------- Dim Ref As Range For Each Ref In Range("extraction").Columns(1).Cells If Ref <> "" Then MsgBox "Reference = " & Ref '--------- 'Ouverture du document pour la publication Set WdDoc = Wd.Documents.Open(Chemin & Fichier) With WdDoc ' Source contient le chemin d'accés au fichier .MailMerge.OpenDataSource _ Name:=Source, _ LinkToSource:=True, _ Format:=wdOpenFormatAuto, _ Connection:="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties=""Excel 8.0;HDR=Yes;""", _ SQLStatement:="SELECT * FROM `Données` Where Données.Impression='X'" 'déterminer au besoin l'imprimante pour ce document '.ActivePrinter = "Xerox 4512 PCL5e" ' Lancer l'impression du publipostage With .MailMerge .Destination = wdSendToNewDocument 'OU wdSendToPrinter après test With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=False End With 'Attente que l'impression soit terminée avant de fermé 'le document et Word While Wd.BackgroundPrintingStatus <> 0 DoEvents Wend 'Execution de la macro formatage et centrage du tableau 'dans le document résultant 'WdDoc.RunAutoMacro (wdAutoExec) '.Close SaveChanges:=wdDoNotSaveChanges 'Ferme le document 'Ferme Word 'Wd.Quit wdDoNotSaveChanges End With '--------- End If Next Ref '----------- 'Libère la mémoire occupée par les objects Set WdDoc = Nothing Set Wd = Nothing End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSQLStatement:="SELECT * FROM `Base` Where Base.Impression='x"