Exporter des pages de feuilles d'un classeur en pdf

Bonjour,

pour que ce soit clair tout de suite je ne connais pas trop vba mais je dois pouvoir me débrouiller si on m'aide un peu.

J'aimerai associer à un bouton une routine qui fasse que chaque page de chaque feuille d'un classeur puisse etre exportée en un fichier PDF. Le nom de chaque fichier pdf est différent. Il se compose d'une partie fixe est d'une partie variable ex "partiefixe_partievariable.pdf". la partie fixe peut etre une liste que je créerai dans une nouvelle feuille du style colonne A les noms des fichiers à générer des pages de la feuille 1, colonne B les noms des fichiers à générer de la feuille 2 ... etc. (sachant qu'il n'y a pas le même nombre de pages par feuilles donc listes de taille différente)

la partie variable est identique pour tous les fichiers générer et peut etre la réponse à une question (ex : quelle période : (rép) S1-2015 ou T2-2015, pour semestre 1 2015 ou trimestre 2 2015) et pour terminer chaque fichier généré par page d'une feuille est enregistré dans un répertoire différent par feuille et qui peut là aussi etre le résultat d'une question du style parcourir.

J'espère avoir était suffisament clair. Cela fait maintenant 4 ans que je me paluche cet exercice manuellement tous les trimestres et semestres et je me dis qu'à vous lire ce doit être possible. merci pour votre aide.

Cordialement

Hervé

Salut,

en effet tu devrais pouvoir y arriver avec quelques outils. Je te conseille de regarder les cours VBA de ce site qui sont très bien fait !

Pour résumer ta procédure, voila ce que tu dois retrouver (grosso modo)

  • déclaration des variables
  • définir le nom de la feuille
  • commencer une boucle du type for ... next ou for each ... next
  • dans la boucle enregistrer la feuille avec l'extension .pdf
  • lui donner le nom avec la variable que tu as définies plus haut
  • fermer la boucle

et ta procédure sera terminé.

Essaye pas à pas, reviens ici je t'aiderai.

Hervé, Isa,

Un p'tit conseil car ton projet est assez complet, pas forcément complexe, mais si tu n'as jamais pratiqué VBA de façon régulière tu vas au devant de beaucoup de points à résoudre.

Donc un conseil, commence juste à mettre un bouton par onglet avec juste un enregistrement en pdf. Reviens dans 2 heures avec cet exercice et on le complètera.

Merci à vous deux,

j'arrive à qqchose comme cela, avec une feuille contenant mes pages de tableaux, une feuille dans laquelle j'ai mis la liste des intitulés de mes fichiers a exporter et une page avec le bouton export (simplement pour me structurer l'esprit).

mais je bloque avec le comptage du nombre de page dans ma feuille TDB_Huriez ! A vrai dire c'est mon premier essai de macro.

Sub Enregistrement_PDF()

'

' Macro1 Macro

' enregistrement des pages de la feuille TDB en pdf

'

Dim Chemin, Nom_Fichier, Chemin_complet

Dim Periode As String

Chemin = "D:\1.Ulin\2.BMR\Essai_export_pdf"

Periode = InputBox("Entrez la Période d'export concernée ex S1-YYYY ou T3-YYYY", "Période Concernée")

If Periode <> "" Then

MsgBox Periode

End If

Sheets("TDB_Huriez").Select

Nb_pages = (HPageBreaks.Count + 1) * (VPageBreaks.Count + 1)

For x = 1 To Nb_pages

Nom_Fichier = Worksheets("feuil2").Range("A" & x) & "_" & ".PDF"

Chemin_complet = Chemin & Nom_Fichier

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"Chemin_complet." _

, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _

:=False, From:=x, To:=x, OpenAfterPublish:=False

Next x

End Sub

Sans le fichier, c'est difficile !

hervedel a écrit :

Nb_pages = (HPageBreaks.Count + 1) * (VPageBreaks.Count + 1)

je ne comprends pas cette formule !!

HPageBreaks et VPageBreaks sont des objets, mais quels objets ?

hervedel a écrit :

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"Chemin_complet." _

, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _

:=False, From:=x, To:=x, OpenAfterPublish:=False

Il faudra que tu sélectionnes ta feuille d'abord.

j'en suis arrivé là.

ca publie quelquechose mais ou ???

la macro ne plante plus mais je ne trouve pas mes fichiers ???

Je ne peux vous donner les fichiers car ce sont des données médicales ! je suis désolé même si je sais que ce serait plus facile pour vous.

Sub Enregistrement_PDF()

'

' Macro1 Macro

' enregistrement des pages de la feuille TDB en pdf

'

Dim Chemin, Nom_Fichier, Chemin_complet

Dim Periode As String

Chemin = "D:\1.Ulin\2.BMR\Essai_export_pdf"

Periode = InputBox("Entrez la Période d'export concernée ex S1-YYYY ou T3-YYYY", "Période Concernée")

If Periode <> "" Then

MsgBox Periode

End If

Sheets("TDB_Huriez").Activate

Nb_pages = ActiveSheet.HPageBreaks.Count + 1

'Nb_pages = (HPageBreaks.Count + 1) * (VPageBreaks.Count + 1)

For x = 1 To Nb_pages

Nom_Fichier = Worksheets("feuil1").Range("A" & x) & Periode & "_" & ".PDF"

Chemin_complet = Chemin & Nom_Fichier

Sheets("TDB_Huriez").Activate

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"Chemin_complet." _

, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _

:=False, From:=x, To:=x, OpenAfterPublish:=False

Next x

End Sub

Les fichiers doivent être sous D:\1.Ulin\2.BMR\

Je pense qu'il manque un antislash ici :

Chemin_complet = Chemin & "\" & Nom_Fichier

Steelson merci de tes conseils,

j'ai ajouté l'\

mais rien de changé je ne retrouve pas mes fichiers même en faisant une "recherche windows"

pourtant je vois bien la boucle se faire 18 fois c'est le nb de pages de mon fichier essai !

je vois une barre de progression intitulée "publication"

qui s'arrete à 3 carrés de progression et qui mouline ensuite (mais seulement 3 carrés de progression !)

la boucle se fait bien 18 fois ce qui correspond au nbre de pages de la feuille et au nombre de mes intitulés de fichier dans ma liste.

???

Suite au prochain épisode mais preneur de toute piste de résolution (peut etre dans ma facon de créer les pdf ???)

Merci à toi de me suivre

RV

J'utilise ce code

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nompdf & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

je ne vois pas trop la différence, sauf à ajouter l'extension .pdf

as-tu les droits en écriture ?


tu peux aussi passer OpenAfterPublish:=False à True


je pense avoir trouvé : pourquoi mettre "Chemin_complet." entre guillemets et de plus suivi par un point ?

Salut,

tu peux aussi rajouter ça :

Shell "explorer.exe " & Chemin_complet, 1

ce qui te permet d'ouvrir le dossier contenant le fichier.

Mais en effet penses à enlever les guillemets sur ta macros.

PS : quant tu ajoutes un code sur ce forum tu peux l'écrire entre les balises Code pour qu'il se mette dans un format plus lisible.

Tu as toutes les balises sur les boutons en haut de cette zone de texte

Bonjour Steelson et merci beaucoup,

cela fonctionne maintenant parfaitement, c'était bien "chemin_complet". qui ne marchait pas.

il y avait aussi un bug dans nom de fichier de ma liste sur la feuil1 un : qui trainait !

Grand merci il me reste maintenant à complléter à plus grande échelle et sur plusieurs feuilles en groupant mes listes de nom de fichier dans une seule feuille (colonne1 noms des fichiers correspondant aux pages de la feuille x, colonne2 noms des fichiers correspondant aux pages d'une feuille y, etc ...)

Mais ce sera pour la semaine prochaine, car je suis en WE bricolage et je dois terminer la charpente d'un toit avant que les pluies ne redoublent car ici dans le pas de calais nos sommes gatés depuis 3 semaines.

Bon WE et je ne manque pas de me rapprocher de toi. Encore merci

L'essentiel est fait

Je t'envoie le déluge d'hier à Noirmoutier

(un chti de naissance)

Rechercher des sujets similaires à "exporter pages feuilles classeur pdf"