Bonjour, je souhaiterais créer une macro qui me permette, à partir d’un fichier excel de 28 onglets de :
-Créer un fichier pdf par onglet qui soit ajusté au format A4 au niveau de la taille en mode paysage (car servira à l’impression)
- De nommer chaque pdf ainsi créé avec le nom de l’onglet excel associé
- D’enregistrer chaque pdf dans un dossier de mon choix (le même pour les 28 fichiers)
- De demander à l’utilisateur s’il souhaite imprimer les fichiers, si oui imprimer les 28 fichiers pdf créés en une seule fois
Je suis assez nouveau dans le codage et j’ai codé la macro ci-dessous. J’ai rencontré plusieurs problèmes quand je la lance notamment :
- Il n’y a que le premier onglet excel qui est enregistré (je pense qu’il y a un problème dans la boucle)
- Le nom reste Feuil1 même si je chance le nom de l’onglet
- Les autres onglets à partir du 2 ne s’enregistrent pas
Pourriez-vous m’aider ?
En vous remerciant,
Sub Automatisation()
Dim ws As Worksheet
Dim pdfName As String
Dim savePath As String
Dim confirmation As VbMsgBoxResult
' Spécifiez le dossier d'enregistrement des fichiers PDF
' Il faut mettre le chemin correct ici
savePath = "C:\Chemin\Vers\Le\Dossier\PDFs\"
' Demande à l'utilisateur s'il souhaite imprimer les fichiers PDF
confirmation = MsgBox("Voulez-vous imprimer les fichiers PDF?", vbYesNo + vbQuestion, "Imprimer PDF")
' Boucle à travers chaque onglet
For Each ws In ThisWorkbook.Sheets
' Crée le nom du PDF basé sur le nom de l'onglet
pdfName = ws.Name & ".pdf"
' Ajuste la taille de l'onglet pour un format A4 en mode paysage
With ws.PageSetup
.PaperSize = xlPaperA4
.Orientation = xlLandscape
End With
' Exporte l'onglet en PDF
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath & pdfName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
' Si l'utilisateur a répondu Oui, imprime le fichier PDF
If confirmation = vbYes Then
' Imprime le fichier PDF
Shell "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /t """ & savePath & pdfName & """"
End If
Next ws
End Sub