Automatiser l’impression d’un état en PDF sous Access 2007
On continue la série « Access et le format PDF » ! Dans un précédent article, il a été question d’automatiser en VBA, sous Access 2003 maximum, et à l’aide de PDFCreator. Mais comment fait-on avec Access 2007 ?
Access 2007 et les PDF
A priori, le code donné dans l’article précédent doit fonctionner également sous Access 2007. Mais le pack Office 2007 comporte également une impression PDF (voir cet autre article du blog). Autant l’utiliser directement, ça fera moins de code à écrire !
Voici comment transformer un état en PDF sous Access 2007 (à supposer que l’extension PDF ait été installée) :
1 2 3 4 |
Sub TestPDF2007() DoCmd.OutputTo acOutputReport, "rpt Clients", _ acFormatPDF, Environ("USERPROFILE") & "DocumentsListe des clients.pdf" End Sub |
Quelques infos complémentaires :
- Le nom de l’état, dans l’exemple, est rpt Clients.
- Le format PDF est défini par la constante
acFormatPDF
. - Le dernier paramètre de l’exemple est le chemin complet du fichier PDF à générer. Ici, un fichier
Liste des clients.pdf
va être créé, et il sera placé dans le dossier Documents de l’utilisateur en cours (ce dossier est donné parDocuments
sous Vista, etMes documents
sur un XP français). On pourrait améliorer ça, mais le but n’est pas de charger le code ici 😉 - Si vous ajoutez un 4ème paramètre avec la valeur
True
, le fichier PDF s’ouvre automatiquement dans Acrobat Reader, après avoir été généré.
Merci pour le petit bout de code…..dépannage rapide et efficace…
Charles > Le 4ème argument fournit le nom du fichier PDF. Il suffit de le remplacer par le contenu d’une zone de texte. Par exemple :
A supposer que :
txtNomFichier
est le nom de la zone de texte, sur le formulaire.Sub / End Sub
se situe dans le formulaire (sinon, remplacerMe
parForms![Nom du formulaire]
)..pdf
.Ouala !
Salut, je tiens d’abord à vous dire un grand merci pour ce tuto, mais j’aimerais savoir s’il est possible de rendre dynamique le nom du fichier PDF a chaque impression .
Par exemple affecter la valeur d’une zone de texte à chaque impression
.D’avance merci
6yphe > Pas beaucoup plus d’éléments. Le complément SaveAsPDFandXPS est installé sur la machine cible (ou déployé avec le runtime) ?
Sinon, il pourrait y avoir un lien avec le profil d’utilisateur (à confirmer).
Bonjour,
Comme Phil, je ne parviens pas à générer des pdf avec utilisation du runtime.
Auriez-vous des éléments nouveaux résolvant de problème ?
Merci d’avance et félicitations pour la qualité de votre site et des infos fournies.
bonjours à tous
Phil > Je n’ai pas eu le temps de tester sur le runtime SP2. Mais j’ai effectivement eu écho de problèmes de conversion PDF sur le runtime. Si j’ai plus d’infos, je posterai par ici.
Fantastique : on obtient un résultat très correct avec très peu de code VBA.
Le seul bémol, c’est que je ne suis pas parvenu à le faire fonctionner dans une base à partir d’un Runtime Access 2007 (même avec le runtime SP2 qui paraît-il corrige ce problème).
Cela a pour effet d’afficher une boîte de dialogue qui dit que l’application va être arrêtée et on se retrouve dehors.
J’ai essayé à tout hasard d’installer SaveAsPDFandXPS.exe mais rien n’y fait.
Peut-être auriez-vous une solution ?
Merci d’avance et bravo pour la richesse de votre site en informations pratiques.
Philippe