Pour enregistrer une plage sélectionnée dans Excel (par exemple un reçu) au format PDF dans Excel à l’aide de VBA, utilisez la syntaxe ci-dessous.

Le code générique

Sub SaveRangeAsPDF()

Range.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\file_name", Quality:=xlQualityStandard, _

IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Le code ci-dessus est un code générique pour enregistrer une plage fixe en tant que document PDF. Lorsque votre macro d’enregistrement pendant que vous exportez Excel au format PDF, un code similaire apparaîtra.

Plage: * Il peut s’agir d’une plage fixe, d’une plage dynamique ou d’une sélection. Vous devez le définir.

Nom de fichier: il s’agit du nom complet du pdf. Définissez-le comme une chaîne.

Le reste des variables peut être laissé tel quel. Je les ai expliqués après exemple.

Exemple: Imprimer un reçu Excel au format PDF à l’aide de VBA Supposons que vous deviez imprimer et envoyer régulièrement des reçus dans Excel. Dans ce cas, vous souhaitez qu’il soit automatisé. Vous ne voudriez pas refaire l’exportation au format pdf encore et encore. Si vous pouvez simplement utiliser un bouton pour le faire, ce serait utile, n’est-ce pas?

Ici, j’ai conçu ce format de reçu. Je souhaite l’imprimer / le sauvegarder / l’exporter au format pdf en utilisant le bouton « Créer PDF ».

imageThis receipt covers the range « A2:L21 ». I have already set the print area.

image

Pour économiser sur cette gamme Excel au format PDF, nous utiliserons le code VBA générique mentionné ci-dessus pour exporter une feuille Excel au format PDF. Nous ajusterons le code selon nos exigences.

Sub PrintSelectionToPDF()

Dim invoiceRng As Range

Dim pdfile As String

'Setting range to be printed

Set invoiceRng = Range("A1:L21")

'setting file name with a time stamp.

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

'setting the fulli qualified name. The resultent pdf will be saved where the main file exists.

pdfile = ThisWorkbook.Path & strfile

invoiceRng.ExportAsFixedFormat Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=False

End Sub

Utilisation du code:

Copiez le code ci-dessus dans votre fichier de reçu en ouvrant l’éditeur VBA (utilisez Alt + F11). Ajustez la plage et le chemin du fichier (si vous le souhaitez) dans le code que vous souhaitez imprimer. Vous pouvez télécharger le fichier de travail ci-dessous.

`lien: /wp-content-uploads-2019-12-Save-Excel-Range-as-PDF-using-VBA.xls [

image 48Save Excel Range as PDF using VBA]

Explication:

Dim invoiceRng As Range

Dim pdfile As String

Le code est simple. Tout d’abord, nous avons créé deux variables. « InvoiceRng as Range » pour la plage / feuille que nous voulons enregistrer au format pdf. strFile pour le nom de fichier complet du PDF résultant.

Set invoiceRng = Range("A1:L21")

Étant donné que notre plage d’impression est fixe, nous définissons la plage de facturation comme Plage (« A1: L21 »).

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

pdfile = ThisWorkbook.Path & strfile

Dans les deux lignes ci-dessus, nous nommons d’abord le fichier avec un horodatage, puis nous ajoutons au chemin du fichier principal. En conséquence, pdfile contient le nom complet du fichier pdf résultant.

invoiceRng.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=True, _

OpenAfterPublish:=False

Enfin, nous utilisons la méthode ExpoortAsFixedFormat de la classe Range pour imprimer la plage Excel définie au format PDF. Nous définissons le type comme xlTypePDF. Un autre choix est xlTypeXPS, qui enregistrera la plage sélectionnée en tant que fichier XPS.

Nous définissons le nom de fichier comme pdfile, qui contient la chaîne du nom complet du fichier pdf. Vous pouvez écrire un texte codé en dur ici ou le personnaliser selon vos besoins.

Ensuite, nous définissons la qualité du fichier pdf comme xlQualityStandard. Nous avons un autre choix comme xlQualityMinimum.

Ensuite, nous définissons le IncludeDocProperties sur True. Cela signifie que le PDF résultant aura les propriétés d’un document.

Ensuite, nous définissons IgnorePrintAreas sur True. Cela signifie qu’il ignorera toute zone d’impression déjà définie.

Enfin, nous définissons OpenAfterPublish sur False. Cela signifie que le fichier que vous créez ne s’ouvrira pas automatiquement. Je l’ai défini sur false car je crée des centaines de fichiers en utilisant une boucle et je ne veux pas qu’ils s’ouvrent. Si vous souhaitez ouvrir le fichier après la création à l’aide d’Excel, définissez-le sur True.

Utilisation de l’impression de la plage sélectionnée au format pdf

Une utilisation de base consiste à imprimer la gamme sélectionnée en cliquant simplement sur un bouton. Mais la meilleure utilisation est de l’utiliser dans une boucle où vous devez créer plusieurs reçus pour différents clients. Créez un sous pour remplir les données, puis utilisez ce code pour imprimer la plage sélectionnée dans une boucle.

Alors oui les gars, voici comment enregistrer la plage sélectionnée au format PDF. J’espère que cela vous a été utile. Si vous avez encore des doutes ou des questions concernant l’impression dans Excel en utilisant VBA, demandez dans la section commentaires ci-dessous.

Articles liés:

lien: / printing-in-vba-print-all-workbooks-in-a-folder-using-vba-in-microsoft-excel [Imprimer tous les classeurs d’un dossier en utilisant VBA dans Microsoft Excel] | Utilisez ce code VBA pour imprimer et enregistrer chaque classeur Excel dans un dossier à l’aide de.

Articles populaires:

lien: / general-topics-in-vba-split-excel-sheet-into-multiple-files-based-on-column-using-vba [Diviser la feuille Excel en plusieurs fichiers basés sur la colonne en utilisant VBA] | Cette feuille Excel fractionnée par code VBA est basée sur des valeurs uniques dans une colonne spécifiée.

Téléchargez le fichier de travail.

lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016] | Pour désactiver les messages d’avertissement qui interrompent l’exécution du code VBA, nous utilisons la classe Application.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur en utilisant VBA dans Microsoft Excel 2016] | Pour ajouter et enregistrer des classeurs à l’aide de VBA, nous utilisons la classe Workbooks. Workbooks.Add ajoute facilement un nouveau classeur, cependant …​