Sauvegarder deux feuilles en pdf via une macro

jean -  
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   -
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 :)


A voir également:

20 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
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
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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

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

Posez votre question
jean
 
Idem :

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

:(
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
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
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
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
Maurice
 
Bonjour
avec un modele de ton fichier ses plus facile a faire
(Range("I6").value) = ("feuil3") et ("I6")
A+
Maurice
0
jean
 
Désolé, je ne comprends pas.
J'ai un niveau très très modeste sur les macro.
0
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
jean
 
Je n'avais pas compris cela dsl.

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

:)
0
Maurice
 
Bonjour
desoler les macro sont pour excel 2007 & + moi je ne peux rien faite pour toi
A+
Maurice
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
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
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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