Export pdf

Résolu
Bonjour à tous.

Je vous explique ma demande.

J'ai un fichier excel avec 250 onglets (feuilles en bas de l'écran) qui correspond a du personnel par ex 1 feuille Matthieu, 1 feuille Pierre..... donc à l'impression 250 pages.... je voudrais extraire chacune de ces pages individuellement avec leur nom et en pdf pour les envoyer 1 par 1 par mail à la personne concernée, .Est ce possible?

Autrement dit je voudrais envoyer la feuille pierre en pdf à pierre, la feuille matthieu à matthieu mais n'avoir qu'une seule manip pour les enregistrer individuellement sous le nom qu'elle porte et en pdf...
Merci par avance.

4 réponses

  1. Contributeur
    Bonjour,

    comme ceci:

    Option Explicit
    Dim nom, chemin  As String
    Dim sh As Worksheet
     Sub Save_onglet()
    'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
    'en compte.
    'ThisWorkbook correspond à l'objet classeur contenant la macro
    For Each sh In ThisWorkbook.Worksheets
    nom = sh.Name
      Sheets(nom).Select
        Save_pdf
     Next
    End Sub
    Private Sub Save_pdf()
    chemin = ActiveWorkbook.Path & "\" '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
    
    

    2
    1. merci, je vais tester ça
      Bonne journée
      0




    2. Bonjour,

      J'ai essayé d'adapter ton code ( dans sheets Bulletin - insertion - Module ) mais cela me donne une erreur l'objet invoqué s'est déconnecté de ses clients

      Option Explicit
      Dim nom, chemin  As String
      Dim sh As Worksheet
       Sub Save_onglet()
      
      For Each sh In ThisWorkbook.Worksheets
      nom = sh.Name
        Sheets("Bulletin").Select
          Save_pdf
       Next
      End Sub
      Private Sub Save_pdf()
      chemin = ActiveWorkbook.Path & " C:\Users\EC000094\Desktop\Bulletins pdf\" 'chemin du dossier destination à adapter
      
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
              chemin & " C:\Users\EC000094\Desktop\Bulletins pdf\" & nom & ".pdf", Quality:=xlQualityStandard, _
              IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
              False
              MsgBox "Enregistrer" 'on peut supprimer
      End Sub
      


      Merci d'avance pour ton retour
      0
    3. Contributeur
      @ibru_7113Simplement comme cela si il n' y a qu'une feuille

      Option Explicit
      Private Sub Save_pdf()
      Dim nom, chemin As String
      nom = Range("C1") & "_" & Range("G1")
      chemin = "C:\Users\EC000094\Desktop\" '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


      a mettre dans un module et associer à un bouton

      quelques liens utile

      https://forums.commentcamarche.net/forum/affich-36518314-export-pdf#3

      @+ Le Pivert
      0
    4. @cs_Le PivertRe...
      Il y a plusieurs feuilles générées par la liste déroulante c'est pourquoi, j'ai créé un sujet "l'objet s'est déconnecté de ses clients"
      mais pas de souci, merci pour ton aide et encore désolée de n'être qu'une débutante qui patauge.

      Bonne soirée
      0
    5. Contributeur
      @ibru_7113Mais les données sont toujours sur la feuille "Bulletin", c'est donc la feuille active que tu veux enregistrer en PDF.
      Donc il suffit de sélectionner dans ta ComboBox l’élève qui va s'afficher sur la feuille "Bulletin" et ensuite d'appuyer sur le bouton qui est associé à la macro qui est dans un module.
      Répété l'opération pour chaque élève.

      C'est bien cela?

      Par contre si tu ne veux que les données et non pas toute la feuille il faut changer la macro comme ceci:

      Sub Save_pdf()
      Dim nom As String
      Dim chemin As String
      Dim Plage As Range
      Set Plage = Application.InputBox("Sélectionnez plage cellules:", Type:=8)
      chemin = "C:\Users\EC000094\Desktop\" 'chemin du dossier destination à adapter
      nom = Range("C1") & "_" & Range("G1")
      Plage.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      chemin & nom & ".pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      False
      Set Plage = Nothing
      MsgBox "Enregistrer" 'on peut supprimer
      End Sub


      cette macro te permet de sélectionner la plage de cellules que tu veux

      @+ Le Pivert
      0
  2. Re....

    Merci pour cette réponse, mais pour moi, total amateur sur excel, je ne comprends rien, désolé de cette ignorance certainement, mais là ça me parait de l'hebreux pour moi!
    0
  3. Super! encore merci.

    Je sentais que ça touché aux macros... Chise que je ne maitrise pas. je vais donc suivre vos tuto. Ensuite je fais un simple copié collé de votre premier message? c'est ça?
    0
    1. Contributeur
      Oui dans un module que vous aurez inséré.

      Voir Ruban Insertion - Module

      Ensuite l'associer à un bouton pour lancer l'opération, voir le lien

      Ce n'est pas très compliqué en suivant les instructions dans les lien fournis

      @+ Le Pivert
      0
  4. Genial merci ca fonctionne!!!!! Champagne!!! vous etes trop fort!
    0