Impression PDF multiples depuis onglets Excel

Résolu
Khrys001 Messages postés 6 Statut Membre -  
 Adrien -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. Khrys001 Messages postés 6 Statut Membre
       
      Bonjour,

      Super merci, mais serait-il possible d'intégrer une boite de dialogue pour définir l'emplacement?
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Khrys001 Messages postés 6 Statut Membre
         
        Re,
        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
    2. Khrys001 Messages postés 6 Statut Membre
       
      Excellent c'est parfait grand merci et bonne soirée.
      0
    3. Adrien
       
      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
    4. Adrien
       
      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