Export pdf

Résolu
vince0708_3121 Messages postés 30 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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. ibru_7113 Messages postés 8 Statut Membre
       
      merci, je vais tester ça
      Bonne journée
      0
    2. ibru_7113 Messages postés 8 Statut Membre
       





      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
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > ibru_7113 Messages postés 8 Statut Membre
         
        Simplement 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
      2. ibru_7113 Messages postés 8 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Re...
        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
      3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > ibru_7113 Messages postés 8 Statut Membre
         
        Mais 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. vince0708_3121 Messages postés 30 Statut Membre
     
    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. vince0708_3121 Messages postés 30 Statut Membre
     
    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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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. vince0708_3121 Messages postés 30 Statut Membre
     
    Genial merci ca fonctionne!!!!! Champagne!!! vous etes trop fort!
    0