1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
'------------------------------------------------------------------
Sub PrintAsPDF(ByVal strFichierPDF As String, ByVal strEtat As String, Optional ByVal strWhere As String = "", Optional ByVal blnOpenReader As Boolean = False)
' Ouvrir l'état en mode caché
DoCmd.OpenReport strEtat, acViewPreview, strFiltre, strWhere, acHidden
' Imprimer en PDF
DoCmd.OutputTo acOutputReport, strEtat, acFormatPDF, strFichierPDF, blnOpenReader
' Refermer l'état
DoCmd.Close acReport, strEtat
End Sub
'------------------------------------------------------------------
Function StringFormat(ByVal strChaine As String, ParamArray varValeurs() As Variant) As String
'Permet de définir la forme du nom de fichier pour le publipostage
Dim intI As Integer
For intI = LBound(varValeurs) To UBound(varValeurs)
strChaine = Replace(strChaine, "{" & intI & "}", Nz(varValeurs(intI)))
Next
StringFormat = strChaine
End Function
'------------------------------------------------------------------
' ---
' CREATION DE FICHES PDF
' ---
'
Sub CreerFichesExpoPersonnelPDF()
Dim strFichier As String
Dim strFichierPDF As String
Dim strEtat As String
Dim strFiltre As String
Dim rst As dao.Recordset
' Nom de l'état à imprimer
strEtat = "E-FicheExpoProdChimPourPersonnelPublipostageMail"
' Nom de base du fichier PDF à créer
strFichier = "\\SocieteMAchine\09-Risque chimique\01- Fiches d'exposition\Fiches exposition 2021\" & "Fiche Expo 2021 - {0} - {1} {2}.pdf"
' Ouvrir la liste des personnes
Set rst = CurrentDb.OpenRecordset("R-ListeDestinatairesPourPublipostageMail", dbOpenSnapshot)
' Parcourir toute la liste
While Not rst.EOF
' Le nom du fichier varie en fonction de la personne
strFichierPDF = StringFormat(strFichier, Format(rst("Matricule num"), "000"), rst("nom"), rst("Prenom"))
' Construire le filtre
strFiltre = "[Matricule num] = " & rst("Matricule num")
' Imprimer l'état en le filtrant sur la personne concernée
PrintAsPDF strFichierPDF, strEtat, strFiltre
' Personne suivante
rst.MoveNext
Wend
' Terminé !
rst.Close
Set rst = Nothing
MsgBox "Opération terminée !", vbInformation
End Sub |
Partager