Excel VBA Enregistrer Sous (Imprimer) vers PDF
Ce tutoriel montre comment enregistrer/imprimer en format PDF en Excel VBA.
Imprimer en format PDF
Cette procédure simple permet d’imprimer la feuille active au format PDF.
Sub SimpleImpressionEnPDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="demo.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
J’ai également créé une fonction avec gestion des erreurs, etc. qui imprimera la feuille active dans un nouveau document PDF :
Sub ImprimerPDF()
Call Enregistrer_PDF
End Sub
Function Enregistrer_PDF() As Boolean ' Copie les feuilles dans un nouveau PDF pour pouvoir les envoyer par courriel
Dim CetteFeuille As String, CeFichier As String, NomRépertoire As String
Dim EnrSous As String
Application.ScreenUpdating = False
' Obtention du nom de sauvegarde du fichier
CetteFeuille = ActiveSheet.Name
CeFichier = ActiveWorkbook.Name
NomRépertoire = ActiveWorkbook.Path
EnrSous = NomRépertoire & "\" & CetteFeuille & ".pdf"
'Définition de la qualité d'impression
On Error Resume Next
ActiveSheet.PageSetup.PrintQuality = 600
Err.Clear
On Error GoTo 0
' Explique à l'utilisateur comment envoyer le fichier
On Error GoTo ErreurRefLib
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=EnrSous, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
On Error GoTo 0
EnregistrerSeulement:
MsgBox "Une copie de cette feuille a été sauvegardée avec succès en format .pdf " & vbCrLf & vbCrLf & EnrSous & _
" Révisez le document .pdf. Si le document ne s'affiche pas correctement, ajustez vos paramètres d'impression et ré-essayez."
Enregistrer_PDF = True
GoTo FinMacro
ErreurRefLib:
MsgBox "Impossible de sauvegarder en pdf. Référence introuvable ou manquante."
Enregistrer_PDF = False
FinMacro:
End Function
La fonction renvoie VRAI ou FAUX en fonction du succès de l’opération de sauvegarde du document PDF.
Fonction de sauvegarde et d’envoi de PDF par courriel
Cette fonction permet d’enregistrer la feuille active au format PDF et (optionnellement) de joindre le PDF à un e-mail (en supposant que Outlook soit installé) :
Sub EnvoyerPDF()
Call Envoyer_PDF("EnvoyerCourriel")
End Sub
Function Envoyer_PDF(Optional action As String = "EnregistrerSeulement") As Boolean ' Copies sheets into new PDF file for e-mailing
Dim CetteFeuille As String, CeFichier As String, NomRépertoire As String
Dim EnrSous As String
Application.ScreenUpdating = False
' Obtention du nom de sauvegarde du fichier
CetteFeuille = ActiveSheet.Name
CeFichier = ActiveWorkbook.Name
NomRépertoire = ActiveWorkbook.Path
EnrSous = NomRépertoire & "\" & CetteFeuille & ".pdf"
'Définition de la qualité d'impression
On Error Resume Next
ActiveSheet.PageSetup.PrintQuality = 600
Err.Clear
On Error GoTo 0
' Explique à l'utilisateur comment envoyer le fichier
On Error GoTo ErreurRefLib
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=EnrSous, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
On Error GoTo 0
' Création du courriel
If action = "EnvoyerCourriel" Then
On Error GoTo EnregistrerSeulement
Set olApp = CreateObject("Outlook.Application")
Set olEmail = olApp.CreateItem(olMailItem)
With olEmail
.Subject = CetteFeuille & ".pdf"
.Attachments.Add EnrSous
.Display
End With
On Error GoTo 0
GoTo FinMacro
End If
EnregistrerSeulement:
MsgBox "Une copie de cette feuille a été sauvegardée avec succès en format .pdf " & vbCrLf & vbCrLf & EnrSous & _
" Révisez le document .pdf. Si le document ne s'affiche pas correctement, ajustez vos paramètres d'impression et ré-essayez."
Envoyer_PDF = True
GoTo FinMacro
ErreurRefLib:
MsgBox "Impossible de sauvegarder en pdf. Référence introuvable ou manquante."
Envoyer_PDF = False
GoTo FinMacro
FinMacro:
End Function
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!