Comment transformer 10 minutes d'Export PDF en 5 secondes avec une MACRO puissante grâce à Excel
Dans ce tutoriel, je vais vous montrer comment automatiser l’export de plusieurs feuilles de calculs en fichiers PDF séparés à partir d’Excel, grâce à une macro VBA accessible même pour un débutant.
Nous verrons tous les aspects, des fondamentaux à l’automatisation, en passant par les petites astuces qui vous feront gagner du temps à chaque utilisation.
Que vous soyez gestionnaire, commercial ou tout simplement gestionnaire d’équipe, vous pourrez gagner en efficacité tout en vous assurant un rendu propre et professionnel.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Présentation
Pour illustrer ce tutoriel, nous allons utiliser un fichier Excel dans lequel chaque feuille Excel représente les ventes d’une région (par exemple : « Nord », « Sud », « Ouest », « Est », « Centre », « Île-de-France ») :

Dans ce fichier, nous retrouvons une feuille par région, avec le nom correspondant comme nom de chaque onglet.

Cela va nous servir à bien différencier les exports selon les territoires commerciaux couverts, ce qui est fréquent dans la plupart des entreprises.
Il est important de garder la même structure d’une feuille à l’autre, car la macro VBA parcourt toutes les feuilles du classeur de la même manière.
Notre objectif sera donc de générer autant de fichiers PDF qu’il y a de feuilles (ici, une feuille = une région = un rapport PDF), chaque fichier étant nommé automatiquement et déposé dans le dossier de notre choix.
2. Pourquoi automatiser les exports PDF dans Excel ?
En général, réaliser un export PDF dans Excel n’a rien de compliqué : le menu « Fichier » > « Exporter » puis l’option « Créer un document PDF/XPS » suffisent pour obtenir un document PDF de qualité.

Mais dès qu’on a plusieurs feuilles à exporter, la tâche devient fastidieuse : il faut répéter l’opération pour chaque onglet, manuellement, et cela devient une perte de temps proportionnelle au nombre de feuilles à traiter.
C’est ici que la programmation VBA prend tout son sens. Automatiser cette opération permet non seulement de gagner du temps, mais aussi d’éviter les erreurs de manipulation (oubli d’une feuille, mauvais nommage, etc.).
Nous pouvons également configurer le nommage des fichiers PDF comme nous le souhaitons (par exemple, ajouter un horodatage pour chaque export) ou choisir de les enregistrer dans un dossier spécifique.
3. Mise en place de l’outil
Comme nous l’avons vu, pour effectuer l’export, nous allons mettre en place une petite macro VBA.
Pour commencer, nous nous rendons dans « Visual Basic » en utilisant le raccourci [Alt]+[F11].
Nous sommes alors dans l’éditeur VBA qui permet d’accéder à tout le code du classeur Excel. Prenons le temps de sauvegarder le fichier sous le format « Classeur Excel prenant en charge les macros » (.xlsm) pour ne pas perdre notre travail en cours de route.
Dans le panneau à gauche, nous effectuons un clic droit sur le nom de notre fichier, puis « Insérer » > « Module ».
Cela crée une zone dans laquelle nous pourrons écrire notre programme principal, c’est-à-dire la macro qui automatisera l’ensemble du processus d’export.
Il n’est pas nécessaire d’être un expert en programmation pour suivre : nous allons détailler ligne par ligne ce que fait la macro, afin que chacun comprenne le rôle exact de chaque commande.
Mais si vous souhaitez en savoir plus sur ce langage extrêmement puissant qu’est le VBA, vous pouvez découvrir mon livre « Apprendre le VBA pour les Grands Débutants » sur excelformation.fr.
À ce stade, nous sommes prêts à codifier le cœur de notre automatisation : la macro qui va parcourir toutes les feuilles, demander le dossier où enregistrer les PDF, puis exporter automatiquement chaque feuille comme rapport individuel.
Nous allons maintenant créer la macro qui automatise notre export PDF.
La logique principale va consister à :
- parcourir chaque feuille,
- construire dynamiquement le chemin de chaque fichier PDF,
- et sauvegarder le résultat.
Pour commencer, nous allons donc créer une nouvelle macro nommée ExporterMultiPDF, qui sera chargée d’exporter chaque feuille du classeur en fichier PDF distinct, en utilisant le mot-clé « Sub », suivit du nom de la macro :
Sub ExporterRapportsRegionauxPDF()
nsuite, nous allons déclarer une première variable nommée feuille, que nous allons typer en tant que Worksheet.
Une variable permet de stocker une information dans la mémoire de l’ordinateur pour pouvoir ensuite la manipuer.
Elle représentera ici, tour à tour, chacune des feuilles du classeur lors de notre boucle.
Dim feuille As Worksheet
Nous déclarons également une seconde variable cheminFichier de type String.
Elle nous servira à construire le chemin complet du futur fichier PDF pour chaque feuille.
Dim cheminFichier As String
Ensuite, nous mettons en place une boucle For Each qui va parcourir toutes les feuilles du classeur.
À chaque passage dans la boucle, la variable feuille pointera vers une feuille différente.
For Each feuille In ThisWorkbook.Worksheets
À l’intérieur de cette boucle, nous construisons le chemin complet du PDF à générer.
L’idée est de :
- partir du chemin complet du fichier Excel (ThisWorkbook.FullPath),
- ajouter " - ",
- puis le nom de la feuille,
- enfin l'extension .pdf.
Attention : FullPath inclut déjà le nom du classeur avec son extension.
Donc le PDF s’appellera quelque chose comme :
« MonClasseur.xlsx - Feuille1.pdf »
cheminFichier = ThisWorkbook.FullPath & " - " & feuille.Name & ".pdf"
Une fois le chemin déterminé, on exporte la feuille en PDF grâce à la méthode ExportAsFixedFormat.
Ici :
- Type:=xlTypePDF indique qu’on veut un PDF
- Filename:=cheminFichier précise où enregistrer le fichier
feuille.ExportAsFixedFormat Type:=xlTypePDF, Filename:=cheminFichier
Nous terminons la boucle grâce à l’instruction Next, qui passe à la feuille suivante.
Next
Une fois que toutes les feuilles ont été exportées, nous affichons un message à l’utilisateur pour confirmer la bonne fin de l’opération.
MsgBox "Tous les rapports ont été exportés en PDF avec succès."
4. Utilisation
Pour utiliser la macro, il suffit de la lancer directement depuis l’éditeur VBA.
Nous pouvons également l’associer à un bouton personnalisable dans l’interface Excel pour la rendre accessible aux utilisateurs.
Pour cela, nous retournons sur la feuille Excel, nous insérons une zone de texte dans laquelle nous saisissons le texte « Exporter les rapports ».
Ensuite, nous effectuons un clic droit sur celui-ci afin de cliquer sur « Affecter une macro ».
Il suffit ensuite d’associer la macro « ExporterMultiPDF » créée précédemment.

Pour aller plus loin, il serait également possible d’améliorer la macro pour n’exporter qu’un sous-ensemble de feuilles, par exemple en n’exportant que celles qui comportent “Rapport” dans leur nom (voir opérateur « InStr » en VBA).
Mais pour la grande majorité des besoins, la version de base que nous venons de coder est à la fois robuste et très simple d’utilisation.
Si vous souhaitez personnaliser davantage la macro, il est possible d’ajouter de nouveaux paramètres, comme la génération automatique d’un e-mail prêt à l’envoi, la fusion de certains rapports dans un seul PDF, ou bien la sécurisation par mot de passe. L’automatisation Excel n’a pour limite que votre imagination.
N’hésitez surtout pas à enregistrer votre macro dans le « Classeur personnel de macros » si vous souhaitez la réutiliser facilement dans tous vos fichiers. Il vous suffira alors d’y faire appel depuis n’importe quel classeur en quelques secondes.