Sub Publipostage()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Chemin = ActiveWorkbook.Path
' ***** 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("Bord versement AI", "Listes")).Select
Sheets(Array("Bord versement AI", "Listes")).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("Bord versement AI").Activate
Range([C2], [F65536].End(xlUp).Offset(0, -3)).Select
NbreX = Application.CountIf(Selection, "x")
If NbreX = 0 Then
MsgBox "Il n'y a pas d'étiquette à extraire.", vbInformation + vbOKOnly
Range("A1").Select
Exit Sub
End If
' Recherche du document Word servant au Publipostage
' ChDrive "C:\"
ChDir ActiveWorkbook.Path
FileMailing = Application.GetOpenFilename("Fichiers Word (*.doc), *.doc", , "Ouvrir le document Word pour le mailing d'étiquettes ...")
If FileMailing = "Faux" Then End
' Ouverture de Word
Dim AppWord As Word.Application
Set AppWord = New Word.Application
Application.ScreenUpdating = False
AppWord.Visible = False 'True
Set DocWord = AppWord.Documents.Open(FileMailing)
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 [Bord versement AI$] WHERE [ETIQUETTE] like 'x' OR [ETIQUETTE] 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("Bord versement AI").Select
' Effacement du fichier temporaire crée spécialement pour la fusion
Kill Chemin & "\temp.xls"
End Sub