Impression PDF multiples depuis onglets Excel

Résolu
Bonjour,

Je souhaiterais une macro me permettant d'imprimer tous les onglets d'un fichier Excel en fichier PDF nommé suivant le nom de l'onglet.

Merci d'avance
Khrys

1 réponse

  1. Bonjour,

    si excel2007 et plus, adaptez le chemin
    Sub Macro2()
        For x = 1 To Worksheets.Count
            NO = Worksheets(x).Name
            Worksheets(NO).ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\_Docs_Prog_Excel\Impression\" & NO & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
            Next x
    End Sub
    0
    1. Bonjour,

      Super merci, mais serait-il possible d'intégrer une boite de dialogue pour définir l'emplacement?
      0
    2. @Khrys001Re,
      Sub Macro2()
          'Chemin contiendra le chemin de la sélection et
          'choix prendra la valeur 0 pour rechercher uniquement les dossiers et
          'n'importe quel autre valeur (de 1 à 255) pour rechercher un dossier ou un fichier.
          'choix repertoire
          Dim choix As Byte
          choix = 0
          Chemin = ChoixDossierFichier(choix)
          If Chemin <> "" Then
              For X = 1 To Worksheets.Count
                  NO = Worksheets(X).Name
                  Worksheets(NO).ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & "\" & NO & ".pdf", _
                  Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
              Next X
          End If
      End Sub
      
      'code trouve sur internet pour selection repertoire ou/et fichier
      Function ChoixDossierFichier(SelType As Byte) As String
           Dim objShell As Object, objFolder As Object
           Dim Chemin As String, Msg As String
           Dim FlagChoix As Long, NbPoint As Integer
      
           If SelType = 0 Then
                FlagChoix = &H1
                Msg = "Selectionner un dossier :"
           Else
                FlagChoix = &H4000
                Msg = "Selectionner un fichier :"
           End If
      
           Set objShell = CreateObject("Shell.Application")
           ' &h1
          ' 1er paramètre toujours 0 (zéro). Il représente le handle de la fenêtre parent
          ' 2ème paramètre Titre de la boite, en dessous de la barre de titre
          ' 3ème paramètre options de BrowseForFolder
          ' 4ème paramètre Facultatif. Répertoire de début d'exploration
          On Error Resume Next
           Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix)
          'Si l 'objet retourné est valide, on teste son contenu (item.title)
           'Si on a sélectionné la racine d'une partition, il se compose du nom de la partition,
           ' suivi de sa lettre et ":" entre parenthèses     NbPoint = InStr(objFolder.Title, ":")
          If NbPoint = 0 Then
              'Sinon, il se compose du nom du dossier uniquement, sans le chemin précédent
              'On récupère ce chemin à l'aide des propriété et méthode ParentFolder.ParseName
              Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
           Else
              'si racine on récupère la lettre du lecteur et les 2 points
              Chemin = Mid(objFolder.Title, NbPoint - 1, 2)
           End If
           ChoixDossierFichier = Chemin
      End Function
      
      0
    3. Excellent c'est parfait grand merci et bonne soirée.
      0
    4. Merci pour le code !!!

      Je l'ai utilisé sur un fichier à plusieurs onglets, par contre il ne tourne que pour les 6 premiers onglets et après il me marque Erreur '5' : Argument ou appel de procédure incorrect.

      Avez vous une idée du problème ?

      Merci d'avance
      0
    5. Si ça peut aider quelqu'un j'ai résolu mon problème qui venait du fait que j'avais des onglets cachés qui stoppaient le fonctionnement de la macro.
      0