Impression PDF multiples depuis onglets Excel

Résolu/Fermé
Khrys001 Messages postés 6 Date d'inscription vendredi 4 mars 2016 Statut Membre Dernière intervention 12 mars 2016 - 12 mars 2016 à 13:42
 Adrien - 6 oct. 2016 à 16:35
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
A voir également:

1 réponse

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
12 mars 2016 à 15:07
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
Khrys001 Messages postés 6 Date d'inscription vendredi 4 mars 2016 Statut Membre Dernière intervention 12 mars 2016
12 mars 2016 à 15:28
Bonjour,

Super merci, mais serait-il possible d'intégrer une boite de dialogue pour définir l'emplacement?
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711 > Khrys001 Messages postés 6 Date d'inscription vendredi 4 mars 2016 Statut Membre Dernière intervention 12 mars 2016
12 mars 2016 à 16:29
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
Khrys001 Messages postés 6 Date d'inscription vendredi 4 mars 2016 Statut Membre Dernière intervention 12 mars 2016
12 mars 2016 à 22:54
Excellent c'est parfait grand merci et bonne soirée.
0
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
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