Sauvegarder plusieurs feuilles dans un seul fichier PDF

Bonjour,

J'ai passé quelques heures à chercher la solution sans y arriver

J'arrive à sauvegarder la feuille active dans un fichier PDF mais je n'arrive pas à valider le code pour plusieurs feuilles dans un même fichier PDF.

Voici le code que j'utilise mais qui me lance une fenêtre avec une barre de progression "publication" qui plante ma machine.

Pour être plus explicite voici mon code inspiré d'un tuto sur Youtube.

Sub enregistrer_onglet_en_pdf()

'enregistrer plusieurs onglets en un pdf
Dim nom_PDF As String
Dim chemin_pdf As String

'identifier le nom du fichier pdf à créer
nom_PDF = "monPDF.pdf"

' identifier chemin d'accès du PDF à créer
chemin_pdf = "C:\Users\FAMILLE\Desktop\Dossier Test" & nom_PDF

'choisir les onglets par leurs noms et les sélectionner
ActiveWorkbook.Sheets(Array("Suivi Activité", "Source", "Suivi Janvier")).Select

'les onglets des feuilles sont bien sélectionnés pas d'erreur sur les noms

' créer le pdf
ActiveSheet.ExportAsFixedFormat Type:= _
xlTypePDF, Filename:=chemin_pdf & nom_PDF, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Merci encore pour votre lecture

Bonjour,

La méthode ExportAsFixedFormat n'existe que pour une variable Worksheet mais pas pour une collection Worksheets (les 3 onglets). Il vous faut imprimer à partir de votre imprimante pdf.

Si Dossier Test est un répertoire, n'oubliez pas le "\".

Sub Enregistrer_onglets_en_pdf()

Dim Chemin_pdf As String

    Chemin_pdf = "C:\Users\FAMILLE\Desktop\Dossier Test\Nom_PDF.pdf"
    'Chemin_pdf = ActiveWorkbook.Path & "\Nom_PDF1.pdf"
    Sheets(Array("Suivi Activité", "Source", "Suivi Janvier")).Select
    ActiveWindow.SelectedSheets.PrintOut copies:=1, Collate:=True, IgnorePrintAreas:=False, _
                                         ActivePrinter:="Microsoft Print to PDF", PrintToFile:=True, _
                                         PrToFileName:=Chemin_pdf

End Sub

Bonjour Eric,

Merci encore pour la réactivité dont vous faite preuve. Je vais essayer dès que je rentre mais l’explication est suffisante et je fais un grand pas en avant. Je fermerais le post dès que j’aurai pu faire le test. bonne journée

Bonjour,

Je viens de tester le code d'Eric, je n'ai plus de publication et de plantage mais une impression se lance sur 2043 Feuilles... puis j'ai un fichier PDF vide. Je ne saisi pas vraiment l'erreur.

Si quelqu'un peut voir le code ?

Merci

'

Bonjour Eric,

Merci encore pour le temps passé.

Ton code et le classeur de test fourni fonctionne bien.

Cependant quand je l'intégre dans mon classeur sur la feuille "Suivi Activité" et que j'active la macro, j'ai une impression de 2063 pages qui se lance

image

J'ai lancé le code copié brutalement et après je l'ai agrémenté des noms de mes onglets et même résultat. j'ai testé avec une feuille ou deux pour voir si problème avec le nom ? pareil.

Voici le code que je vous soumets. Je pense que j'ai comme une limite ou un problème dans mes déclarations ? (au fait une condition If sans end if je ne savais pas que ça fonctionnait ?)

Sub CommandButton1_Click()

Dim copies
Dim ShEnCours As Worksheet

Set ShEnCours = ActiveSheet
Chemin_pdf = ActiveWorkbook.Path & "\Nom_PDF1.pdf"
Sheets(Array("Suivi Activité", "Source", "Suivi Janvier")).Select
copies = Abs(Val(InputBox("NOMBRE DE COPIES ?", "Indiquer la quantité désirée...")))
If copies Then ActiveWindow.SelectedSheets.PrintOut copies:=copies, Collate:=True, IgnorePrintAreas:=False, _
ActivePrinter:="Microsoft Print to PDF", PrintToFile:=True, _
PrToFileName:=Chemin_pdf
ShEnCours.Select
Set ShEnCours = Nothing

End Sub

As-tu réglé ton problème ?

Bonjour,

Non j’ai une solution de replis ou je mets un bouton impression sur chaque page mais c’est du bidouillage.

Je ne comprends pas.

Merci pour ton suivi

Bonjour,

Je peux regarder ton problème en privé si ton fichier est confidentiel.

Bonjour,

Merci je m’en occupe demain suis à l’extérieur aujourd’hui

Top merci

Autant pour moi !

Suite à un échange sur un message, le code fonctionne ExportAsFixedFormat :

Sub enregistrer_onglet_en_pdf()

'enregistrer plusieurs onglets en un pdf
Dim nom_PDF As String
Dim chemin_pdf As String

'identifier le nom du fichier pdf à créer
nom_PDF = "monPDF.pdf"

' identifier chemin d'accès du PDF à créer
chemin_pdf = "C:\Users\FAMILLE\Desktop\Dossier Test\" & nom_PDF
'    chemin_pdf = ActiveWorkbook.Path & "\Nom_PDF1.pdf"

'choisir les onglets par leurs noms et les sélectionner
ActiveWorkbook.Sheets(Array("Suivi Activité", "Source", "Suivi Janvier")).Select

'les onglets des feuilles sont bien sélectionnés pas d'erreur sur les noms

' créer le pdf
ActiveSheet.ExportAsFixedFormat Type:= _
xlTypePDF, Filename:=chemin_pdf, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Bonjour Eric,

Encore une fois je te suis redevable du temps que tu me consacres et je te remercie. (je suis passé au tutoiement c'est quand plus simple )

Concernant le code il fonctionne jusqu’à ce que j'ai une fenêtre qui s'ouvre pour publication qui plante excel et que j'avais déjà eu auparavant.

image

Par exemple avec le code que tu m'as donné cela fait 4 minutes que ça tourne. Je pense que j'ai un problème de paramétrage sur Excel ? J'ai essayé sur mon poste avec 2010 au bureau et c'est le même constat. Il faudra peut être que j'essaye sur un autre poste mais au bureau nous avons tous les mêmes ordi. Désolé de voir que chez toi ça fonctionne et pas chez moi. Je vais faire un tour sur les forums pour essayer de trouver la réponse. Je te tiens au courant.

Je fais suite à mon message précédent et j'ai peut être un élément de recherche

J'ai arrêté la publication mais j'ai quand même obtenu un fichier pdf de 2062 pages avec les deux premières feuilles en première et deuxième page et la troisième feuille (My Perf) en 2062eme page. La commande balaye donc bien les feuilles mais s'emballe et fait planter excel comme si c'était un calcul sans limite ?

Bonjour,

Il faut purger tes onglets. Je m'explique : A partir de ta dernière ligne, sélectionne ta dernière ligne + 1 jusqu'à la fin et supprime les lignes. Idem pour les colonnes.

BRAVO ! BRAVO ! ERIC

J'ai essayé l'impression avec une seule feuille...et ça fonctionne puis la deuxième...Aie ! J'ai donc compris ce que tu m'as suggéré sur la limite dans la page.

J'ai donc défini les zones d'impressions et modifié la feuille en impression paysage puis j'ai enregistré le fichier et ça fonctionne parfaitement. Le problème depuis le début c'est donc une limitation dans l'impression.

Merci encore à toi et à la communauté de ce site qui à fait que nous nous soyons rencontré.

MERCI

Rechercher des sujets similaires à "sauvegarder feuilles seul fichier pdf"