Sauvegarder deux feuilles en pdf via une macro

Fermé
jean - 12 mars 2015 à 16:41
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 13 mars 2015 à 17:50
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
12 mars 2015 à 18:39
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
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
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
12 mars 2015 à 18:57
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
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
12 mars 2015 à 19:12
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
12 mars 2015 à 19:15
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
@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
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
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
Bonjour
avec un modele de ton fichier ses plus facile a faire
(Range("I6").value) = ("feuil3") et ("I6")
A+
Maurice
0
Désolé, je ne comprends pas.
J'ai un niveau très très modeste sur les macro.
0
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
Je n'avais pas compris cela dsl.

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

:)
0
Bonjour
desoler les macro sont pour excel 2007 & + moi je ne peux rien faite pour toi
A+
Maurice
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 mars 2015 à 07:56
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 mars 2015 à 08:03
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 13/03/2015 à 08:19
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
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
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 mars 2015 à 17:50
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