Export feuilles excel séparées au format pdf

Résolu
b.desmarets Messages postés 23 Statut Membre -  
b.desmarets Messages postés 23 Statut Membre -
Bonjour à tous !

Je souhaiterais avoir une petite commande macro pour exporter des feuilles excel en pdf.
Deux contraintes néanmoins: sur toutes les feuilles, je souhaiterais que seules celles dont les onglets sont sélectionnés (ctrl clic sur chacune) soit exportés et que chaque onglet produise un pdf séparément.

Pour le moment, j'ai pondu cela:

Sub Test()

Dim Fe As Worksheet

For Each Fe In ActiveWindow.SelectedSheets

Fe.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\mesdocuments\" & Fe.Name & ".pdf"

Next Fe

End Sub


Mais dans ce cas il m'exporte certes que les onglets sélectionnés et me produit un pdf par onglet, mais réunit tous les onglets dans chaque pdf...
Le top aussi serait que les pdf soient générés dans un dossier "PDF" dans le même répertoire que le fichier excel.

D'avance merci pour le coup de main, bien à vous.
Bapt.

1 réponse

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    comme ceci:

    Option Explicit
    Dim nom, chemin  As String
    Dim sh As Worksheet
    Private Sub CommandButton1_Click()
    For Each sh In Workbooks("Save_pdf.xls").Windows(1).SelectedSheets 'adapter nom classeur
     nom = sh.Name
        Save_pdf
     Next
    End Sub
    Private Sub Save_pdf()
    chemin = "C:\Users\LePivert\Documents\" 'chemin du dossier destination à adapter
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            chemin & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False
            MsgBox "Enregistrer" 'on peut supprimer
    End Sub
    

    pour le même chemin que le classeur:

     chemin = ActiveWorkbook.Path & "\"


    1
    1. b.desmarets Messages postés 23 Statut Membre
       
      Bonsoir,
      Et merci beaucoup pour ta réactivité.
      Néanmoins je bloque sur la façon d'utiliser la macro. S'agissant d'une private sub, elle n’apparaît pas dans la liste des macro et se déclenche automatiquement c'est ça ? Mais à quelle condition svp ? N'est-il pas possible de générer l'action via un bouton ?

      J'ai testé ce code et lancé depuis la fenêtre VBA dans l'onglet développeur (petit triangle vert), il m’apparaît l' Erreur d'exécution '1004': Erreur définie par l’application ou par l’objet. Je lis qu'il s'agit souvent d'un problème d'appel de cellule, pourtant il n'y a pas d'erreur de ce côté là si ?

      Option Explicit
      Dim nom, chemin As String
      Dim sh As Worksheet
      Private Sub Command_Click()
      For Each sh In Workbooks("Test.xlsm").Windows(1).SelectedSheets 'adapter nom classeur
      nom = sh.Name
      Save_pdf
      Next
      End Sub
      Private Sub Save_pdf()
      chemin = ActiveWorkbook.Path & "\PDF\"
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      chemin & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      False
      MsgBox "Enregistrer" 'on peut supprimer
      End Sub


      D'avance merci, bien à toi.
      Bapt.
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Je t'ai fait un exemple, tu n'auras qu'a changer le chemin de destination dans le code:

      https://www.cjoint.com/c/HEphgSW1aPQ

      Si tu veux te servir du code, il faut le mettre dans un module comme ceci:

      Option Explicit
      Dim nom, chemin  As String
      Dim sh As Worksheet
       Sub Save_onglet()
      For Each sh In Workbooks("Test.xlsm").Windows(1).SelectedSheets 'adapter nom classeur
       nom = sh.Name
        Sheets(nom).Select
          Save_pdf
       Next
      End Sub
      Private Sub Save_pdf()
      chemin = ActiveWorkbook.Path & "\PDF\" 'chemin du dossier destination à adapter
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
              chemin & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
              IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
              False
              MsgBox "Enregistrer" 'on peut supprimer
      End Sub
      
      


      ensuite pour le lancer tu lui attribues (Save_onglet) un raccourci clavier comme ceci:

      http://www.info-3000.com/vbvba/raccourciclavier.php


      @+ Le Pivert
      0