Excel VBA Enregistrer Sous (Imprimer) vers PDF

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

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! vba save as


Learn More!
vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA