Sauvegarder deux feuilles en pdf via une macro [Fermé]

Signaler
-
Messages postés
7059
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 novembre 2020
-
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

Messages postés
7059
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 novembre 2020
576
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

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. :)
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

:)
Messages postés
7059
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 novembre 2020
576
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 

Idem :

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

:(
Messages postés
7059
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 novembre 2020
576
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 


Messages postés
15420
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2020
1 399
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
@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
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
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.
Bonjour
avec un modele de ton fichier ses plus facile a faire
(Range("I6").value) = ("feuil3") et ("I6")
A+
Maurice
Désolé, je ne comprends pas.
J'ai un niveau très très modeste sur les macro.
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
Je n'avais pas compris cela dsl.

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

:)
Bonjour
desoler les macro sont pour excel 2007 & + moi je ne peux rien faite pour toi
A+
Maurice
Messages postés
15420
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2020
1 399
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 ????
Messages postés
7059
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 novembre 2020
576
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!
Messages postés
15420
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2020
1 399
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
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.
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.
Messages postés
7059
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 novembre 2020
576
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à!