Sauvegarder deux feuilles en pdf via une macro

jean -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

J'aimerai une macro afin de pouvoir sauvegarder la feuille active plus une autre feuille du classeur en pdf.
Cette feuille est nommé dans une cellule I6.
La sauvegarde devra s'appeler avec le nom de la cellule F9.

J'ai déjà un début de code, mais n'arrive pas à l'adapter pleinement pour mes besoins.

' enregistre feuille "index"
Sub enregistrer_manu()
Dim chemin As String, fichier As String
chemin = ThisWorkbook.Path

With Worksheets("index")
NomClient = .Range("F9") & ".pdf"
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier
End With

End Sub

Merci à tous pour votre aide :)

20 réponses

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

    Voici le code, il suffit de ce mettre sur la feuille active:

    Sub Enreg_Pdf()
    Dim Nom As String, LeRep As String
    Nom = Range("A1").Value ' a adapter
    LeRep = ThisWorkbook.Path & "\"  ' à adapter
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        LeRep & Nom & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        From:=1, To:=1, OpenAfterPublish:=False
    End Sub

    0
  2. jean
     
    Merci beaucoup :)

    J'ai tenté d'adapter, mais cela ne fonctionne pas.

    Sub Enreg_Pdf()
    Dim Nom As String, LeRep As String
    Nom = Range("I6").Value ' a adapter
    LeRep = ThisWorkbook.Path & "\" & Range("F9") & ".pdf" ' à adapter
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    LeRep & Nom & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    From:=1, To:=1, OpenAfterPublish:=False
    End Sub

    I6 est la cellule contenant le nom de l'onglet à sauvegarder et F9 le nom du fichier par lui même.

    Merci pour votre aide. :)
    0
  3. jean
     
    Pour une meilleur vision, j'ai fait une copie d'écran de l'erreur.
    https://dl.dropboxusercontent.com/u/197385501/2015-03-12_185508.png

    :)
    0
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Sub Enreg_Pdf() 
    Dim Nom As String, LeRep As String 
    Nom = Range("I6").Value ' a adapter 
    LeRep = ThisWorkbook.Path & "\" & Range("F9").Value ' à adapter 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     LeRep & Nom & ".pdf", Quality:= _ 
     xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ 
     From:=1, To:=1, OpenAfterPublish:=False 
    End Sub 
    

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jean
     
    Idem :

    Message d'erreur ;
    erreur d'exécution '438'
    Propriété ou méthode non gérée par cet objet.

    :(
    0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Cela fonctionne très bien chez moi. Ce qu'il faudrait savoir c'est que signifie:
    Range("F9").Value
    parce que là c'est un nom de fichier qui se met devant le nom du fichier. Si c'est un nom de dossier, il faut que ce dossier existe et le code serait le suivant:

    LeRep = ThisWorkbook.Path & "\" & Range("F9").Value  & "\"' à adapter 


    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour a vous deux

    'export table onglets
    'sauvegarder la feuille active plus une autre feuille du classeur en pdf.
    'Cette feuille est nommé dans une cellule I6.
    'La sauvegarde devra s'appeler avec le nom de la cellule F9.
    Sub Tst()
        Dim Ar(1) As String
     
        Ar(0) = ActiveSheet.Name
        Ar(1) = Worksheets("feuil1").Range("I6")    'adapter le nom de la feuille idem pour F9
        Application.ScreenUpdating = False
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & Worksheets("feuil1").Range("F9") & ".pdf" _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
        Application.ScreenUpdating = True
    End Sub
    
    0
  9. jean
     
    @cs_Le Pivert : F9 représente une variable définie par la fonction maintenant() en F4 et complétée par : =TEXTE(F4;"aaaammjjhhmm")&"-ITA-A"

    @f894009 Merci pour ton aide :). Mais mon but est de ne rien mettre en dur au niveau de la sélection ( dans ton aide ("feuil1") ) car j'ai près de 10 feuilles contenant cette macro. D'où l'intérêt de n'avoir qu'une Macro et non 10. ;)

    Merci pour votre aide
    0
  10. Maurice
     
    Bonjour

    Faire 2 feuille dans le meme PDF
    Sub Macro2()
    Sheets(Array("Feuil3", "Feuil2")).Select
    Nom = Range("I6").Value ' a adapter
    LeRep = ThisWorkbook.Path & "\" '& Range("F9").Value ' à adapter
       ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          LeRep & Nom & ".pdf", Quality:=xlQualityStandard, _
          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End Sub
    

    A+
    Maurice
    0
  11. jean
     
    Merci Maurice pour ton aide.

    Mais là encore, mon problème reste la dénomination en dur des feuilles.
    ( "feuil3") et ("feuil2") il faudrait que cette valeur soit égale au texte contenu dans des cellules. G6 pour ("feuil3") et ("I6") pour ("feuil2").

    Encore merci pour votre aide à tous.
    0
  12. Maurice
     
    Bonjour
    avec un modele de ton fichier ses plus facile a faire
    (Range("I6").value) = ("feuil3") et ("I6")
    A+
    Maurice
    0
  13. jean
     
    Désolé, je ne comprends pas.
    J'ai un niveau très très modeste sur les macro.
    0
  14. Maurice
     
    Bonjour
    Ci-dessous La procédure
    Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com
    Va sur ce site : http://cjoint.com
    Clic sur parcourir,
    Cherche ton fichier,
    clic sur ouvrir,
    Clic sur "Créer le lien cjoint",
    Copier le lien,
    Revenir ici le coller dans une réponse
    A+
    Maurice
    0
  15. jean
     
    Je n'avais pas compris cela dsl.

    https://dl.dropboxusercontent.com/u/197385501/jean_help-me-pls.xls

    :)
    0
  16. Maurice
     
    Bonjour
    desoler les macro sont pour excel 2007 & + moi je ne peux rien faite pour toi
    A+
    Maurice
    0
  17. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    car j'ai près de 10 feuilles contenant cette macro

    Pour moi feuil1 est la feuille qui contient les infos, d'apres ce que vous ecrivez, rien ne montre dans quelle(s) feuille(s) sont ces infos I6 et F9

    je viens de recuperer votre fichier, F9 Ok, mais I6 pas Ok et vos dix feuilles sont ou ????
    0
  18. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voici le code d'après le classeur:

    Sub Enreg_Pdf()
    Dim Nom As String, LeRep As String
    Sheets("Auto").Select
    Nom = Range("I6").Value ' a adapter
    LeRep = ThisWorkbook.Path & "\" & Range("F9").Value ' à adapter
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
     LeRep & Nom & ".pdf", Quality:= _
     xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
     From:=1, To:=1, OpenAfterPublish:=False
     Sheets("Main").Select
    End Sub
    


    Je ne vois pas la difficulté. A moins que tu ne saches pas dans quel onglet se trouve les données?
    Là c'est une autre approche!
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      je suis de votre avis sur le cote incertain de l'endroit des donnees a utiliser et surtout au depart, deux feuilles a sauvegarder dans le meme PDF et je suis un des seul a avoir fait un code pour, mais pas de reaction de jean vis a vis des autres propositions a une seule feuille
      0
  19. jean
     
    Merci pour votre aide à tous :)

    Je pense que je n'arrive pas à me faire comprendre et j'en suis désolé, je vais tenter d'être plus clair.

    Les données que je dois sauvegarder sont bien identifiées, je sais parfaitement de quels onglets ou feuilles il s'agit. Mais comme vous avez pu le voir dans la structure très allégée de mon classeur, mes documents vont par deux, un document que je renseigne et un autre qui est renseigné automatiquement d'après le premier document.
    J'ai cinq documents différents d'ou l'intérêt pour moi d'avoir une macro unique avec des variables.

    Mais je pense avoir fait une bourde, je vérifie cela dans l'AM et je vous tiens au courant.
    Merci encore à tous.
    0
  20. jean
     
    Encore merci à tous, je crains que les doubles variables ne soient pas possibles, je vais donc faire 5 fois la même macro en ne changeant que les feuilles à imprimer.

    Encore merci pour le temps passé sur ce problème.
    0
  21. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voilà une solution pour éviter de faire 5 fois la même macro:

    Sub Enregistrer(Nom As String, Onglet As String)
    Sheets(Onglet).Select
    LeRep = ThisWorkbook.Path & "\" & Onglet 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
     LeRep & Nom & ".pdf", Quality:= _
     xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
     From:=1, To:=1, OpenAfterPublish:=False
     Sheets("Main").Select
    End Sub
    Sub Save_pdf()
    Enregistrer Range("I6").Value, "Auto" 'nom et onglet
    End Sub
    


    Pour appeler tu n'auras qu'a changer le nom de l'onglet dans la Sub Save_Pdf

    Voilà!
    0