XL 2016 Comment réduire la taille d'un fichier pdf enregistré depuis excel

MINIZ

XLDnaute Nouveau
Bonjour,
j'ai créer un petit programme en vba qui m’enregistre une feuille A4 de classeur en pdf. Tout fonctionne sauf que le fichier pdf avoisine les 400ko et que le serveur où je dois upload mon fichier m'autorise 200ko max.
Avez vous une idée?
J'ai essayé en passant par imprimer => imprimante "pdf creator" cela me donne 48Mo sauf que je préfère la solution d'enregistrer sous .pdf car je peux enregistrer et donner le nom que je veux...
Ce petit programme est à destination d'une personne qui ne maîtrise pas l'informatique.

voici mon code pr enregistrer en pdf
VB:
Sub ImprimePDF()
Dim numfacture As Integer
'Enregistre le fichier excel
        ActiveWorkbook.Save
'Imprime en PDF et rajoute le numéro de facture
    Dim fichier As String
    fichier = "D:\Factures\Facture-" & "-" & [F2].Value & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier, Quality:=xlQualityMinimum, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
 

MINIZ

XLDnaute Nouveau
Bonjour MINIZ, DRANREB, TEMJEH, le forum

Un code testé qui imprime avec une image supplémentaire pour 42Ko au final avec pdf creator
On peut imprimer une page ou toutes les pages sur le workbook.
Ici, choix du paramétrage : sheet.name + range("G2")

xl-ment
J’ai très certainement un souci qui vient de chez moi car après avoir télécharger ton fichier Excel et imprimer un pdf je me retrouve encore à 351ko alors que ton fichier fait 41ko. Je comprend pas est se que ça peut venir de mes paramètres Excel? En tout cas si ton fichier exporte bien un fichier pdf de 44ko (ce que je ne doute pas), c’est qu’il ne faut pas que je cherche dans mon code mais plutôt dans les réglages de paramètre. Tu en penses quoi?
 

MINIZ

XLDnaute Nouveau
Zebanx je te remercie pour ton aide, malheureusement je n’arrive pas à exécuter ta macro; elle bloque sur la ligne suivant.
Set PdfJob =CreateObject(« PDFCreator.clsPDFCreator »)

Ps: j’aimerais tellement savoir faire des macro comme toi mais je t’avoue que je suis perdu...
autre question, quand tu exécutes ma macro il fait combien le fichier pdf chez toi?
 

zebanx

XLDnaute Accro
Re-

Peut-être un problème de version de PDF CREATOR.
J'utilise une vieille version (1.4.3) qu'on peut encore, sauf erreur, retrouver sur la toile et qui ne bloque pas au niveau du code.

Quand à savoir combien de PDF sont crées, ça dépend du code
- printPDF_allwks : toutes les feuilles
- printPDF_1sh : 1 feuille

Je n'ai pas écrit cette macro sinon mais ça m'a fait plaisir de le retrouver et de voir qu'il était encore opérationnel.

++
 

MINIZ

XLDnaute Nouveau
Re-

Peut-être un problème de version de PDF CREATOR.
J'utilise une vieille version (1.4.3) qu'on peut encore, sauf erreur, retrouver sur la toile et qui ne bloque pas au niveau du code.

Quand à savoir combien de PDF sont crées, ça dépend du code
- printPDF_allwks : toutes les feuilles
- printPDF_1sh : 1 feuille

Je n'ai pas écrit cette macro sinon mais ça m'a fait plaisir de le retrouver et de voir qu'il était encore opérationnel.

++
Ok je vais regarder pour mettre une version qui fonctionne par contre je voulais savoir le poids du fichier pdf quand tu le génère avec mon code?
En tout cas merxi
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,
Puis-je avoir une petite correction dans la codification suivante ?

Extrait de celle qui fonctionne à merveille :
VB:
Set Plage = Application.InputBox(Prompt:="Sélectionner votre zone: (Ex. B6:E14) ", _
                         Title:="Sélection de zone ", Default:="$B$6", Type:=8)
 Plage.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier, Quality:=xlQualityMinimum, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
... pour me permettre de sélectionner directement la plage, connaissant "dl" la dernière cellule, variable, à sélectionner de la façon suivante :

dl = Cells(Rows.Count, 3).End(xlUp).Row
Range("B6:E" & dl).Select

J'ai essayé avec ceci, mais cela ne fonctionne pas :
Code:
Set Plage = Range("B6:E" & dl).Select
'au lieu de   Set Plage = Application.InputBox(Prompt:="Sélectionner votre zone: (Ex. B6:E14) ", _
                         Title:="Sélection de zone ", Default:="$B$6", Type:=8)
 Plage.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier, Quality:=xlQualityMinimum, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Merci pour votre aide
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Bonjour Zebanx,
Merci de vous pencher sur ma requête et d'avoir répondu rapidement.
Je vous ai placé dans le fichier ci-joint, après votre Sub (), celui que je fais fonctionner actuellement (avec au début les explications pour décrire mon objectif).
Vous ciblerez ainsi plus aisément ce que je recherche réellement :
- exporter un fichier PDF sur ma clé USB
- avec seulement la zone prédéfinie par dl (dernière ligne du résultat de recherche sur individu placé en B4, une autre macro faisant l'affichage de la zone avec nouvelle 'dl').
Un essai de l'application #25 ne m'a donné qu'un PNG avec un rectangle vide. Je préfère un résultat en format PDF.
Merci pour votre aide.
Webperegrino
 

Pièces jointes

  • EXPORTERimprimer (2).xlsm
    18.1 KB · Affichages: 5

zebanx

XLDnaute Accro
Re-

Je ne suis pas du tout un spécialiste dans le domaine donc...

En repartant de cela

ca donne ça et à vous de paramétrer les bornes, OK ;) ?

++
 

Pièces jointes

  • imprimer.xlsm
    17.1 KB · Affichages: 17

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Zebanx, un énorme merci !
La dernière mouture, adaptée à la macro de mon gros fichier, fonctionne parfaitement.
L'export se réalise avec un enregistrement clair à 9 Ko, au lieu de plus de 100 Ko : ça c'est une cerise de plus sur le gâteau.
C'est excellent.
Merci pour votre aide car avant je devais faire un .JPG de la zone d'écran, passer sur un site pour transformer en PDF, l'enregistrer sur la clé Usb pour l'exploiter dans des messages Outlook, puis répéter pour un autre placé en B4.
Maintenant en moins de 2 secondes le fichier PDF y est placé ; une merveille votre programmation et des heures de travail gagnées.
Merci à vous d'être sur ce Forum,
Cordialement,
Webperegrino
 

zebanx

XLDnaute Accro
Re

Tant mieux.
Et c'est toujours intéressant d'avoir les détails que vous avez communiqués (temps gagné, taille de fichier...) parce qu'on peut plus facilement conserver un code ou pas.
Celui-là donc, je le mets de côté.

Bonne soirée
zebanx
 

MINIZ

XLDnaute Nouveau
zebanx, je viens de telecharger ton code;
lorsque je l'execute il me sort un fichier de 87ko pr la plage B2:B7
par contre si je passe la plage à A1:B7 je me retrouve avec un fichier de 167ko

As tu une idée je tourne en rond et comprend tjrs pas pourquoi ca ne fonctionne pas?
Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 074
Messages
2 085 059
Membres
102 768
dernier inscrit
clem135164