Automatisation impression

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

Bonjour
Je viens d’effectuer un test avec ta procédure en l’état juste à modifier cette ligne :

savePath = "C:\Chemin\Vers\Le\Dossier\PDFs\"

Par cette ligne

savePath = ThisWorkbook.Path & "\"

Afin d’enregistrer les fichiers pdf dans le même répertoire que celui du fichier de la macro et bingo ils sont présents après exécution :

Récupères le et testes le

Onglet « Feuil1 » cliques sur le bouton « pdf »

J’ai répondu « Non » au message pour l’impression

Fais moi un retour

Classeur1.xlsm (23,7 Ko)

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.