Imprimer un PDF en VBA depuis Excel (4 méthodes modernes)

Oui, on peut imprimer un PDF (ou d'autres fichiers) directement depuis Excel en VBA. Pratique pour lancer des impressions de factures, fiches de paie, documents RH… à partir d'une liste dans Excel ou d'un répertoire. Sans devoir les ouvrir!

Ci-dessous, vous trouverez 4 méthodes modernes pour le faire: la méthode Shell "classique", l’API Windows ShellExecute (32/64 bits), la ligne de commande (Adobe/Foxit) pour cibler une imprimante, et un fallback PowerShell. Chaque méthode a son intérêt selon le poste et le contexte.

Impression des fichiers PDF avec VBA

Méthode 1 – Shell (rapide, imprime via l'appli par défaut)

La version "simple" que beaucoup utilisent: on passe par l'Explorateur Windows (objet Shell) pour exécuter le verbe Print du fichier. Important : cette impression utilise l'imprimante par défaut du système et le viewer PDF par défaut (Edge, Reader, Foxit…). Ci-dessous, une version robuste (test d'existence du fichier, gestion de chemin/dossier).

Attention : si rien ne se passe, c'est souvent lié au viewer par défaut (ou à des politiques IT). Dans ce cas, testez la méthode 2 ou 3.

Méthode 2 – WinAPI ShellExecute (compatible 32/64 bits)

Ici, on appelle directement l'API Windows ShellExecute avec l'opération "print". C'est propre et compatible avec Microsoft 365 32/64 bits.

Comme la méthode 1, cela passe par l'imprimante par défaut et le viewer par défaut.

Méthode 3 – Ligne de commande (Adobe Reader / Foxit) pour cibler une imprimante

Besoin de choisir une imprimante précise sans toucher à l'imprimante par défaut ? On peut lancer le viewer PDF avec des arguments en ligne de commande. Les paramètres varient selon les versions, mais les schémas ci-dessous fonctionnent souvent.

À noter : les commutateurs peuvent changer selon la version du viewer. Testez localement et, si besoin, adaptez (certains Adobe demandent aussi le pilote/port).

Méthode 4 – PowerShell (fallback simple)

PowerShell sait aussi lancer l'action Print du fichier. Nous pouvons donc l’appeler depuis VBA. Cela reste dépendant du viewer par défaut et de l'imprimante par défaut.

Exemples utiles pour une impression efficace

Impression des factures PDF depuis Excel

Imprimer tous les PDF d'un dossier

(Option) Basculer temporairement l'imprimante par défaut

Si vous n'utilisez pas la méthode 3, vous pouvez basculer l'imprimante par défaut avant d'imprimer, puis la remettre. À éviter, de préférence, sur des postes gérés/partagés.

FAQ rapide

FAQ: Impression via VBA

Ça ne marche pas, aucune impression ne part.
Souvent : le fichier n’existe pas (chemin/network/OneDrive) ou le viewer par défaut ne gère pas le verbe Print silencieux. Testez la méthode 2 (ShellExecute) ou la méthode 3 (Adobe/Foxit).

Je veux choisir l’imprimante sans changer la valeur par défaut.
Utilisez la méthode 3 (ligne de commande) et passez le nom de l’imprimante en argument.

32/64 bits ?
La méthode 2 inclut les déclarations PtrSafe. Elle fonctionne avec Microsoft 365 (anciennement “Microsoft Office”) 32 et 64 bits.

Est-ce que ces codes ouvrent une fenêtre ?
Selon le viewer, une fenêtre peut apparaître. Certaines configurations permettent l’impression silencieuse, mais ce n’est pas garanti pour tous les lecteurs PDF.

Plus de détails sur la méthode .InvokeVerb sur le site de Microsoft.

Pour aller plus loin en VBA

Quelques articles supplémentaires pour plus d'efficacité et d'efficience avec VBA:

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

20 commentaires sur “Imprimer un PDF en VBA depuis Excel (4 méthodes modernes)”