Macro VBA Imprimer fichier excel en PDF

bast0504

XLDnaute Occasionnel
Bonjour forum,

Pourriez-vous m'aidez à trouver une macro qui puisse me permettre d'imprimer mon fichier excel en PDF.

je voudrais imprimer tous les onglets sauf le premier (Règles)

Chaque onglet serait ajusté sur une seule page

Merci
 

Pièces jointes

  • Imprimer en PDF.xlsx
    21.7 KB · Affichages: 734
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Imprimer fichier excel en PDF

Bonsoir bast0504,

Voir avec cette macro, juste une petite adaptation de l'enregistreur de macro.
Adapter le chemin du répertoire.

VB:
Option Explicit

Sub Enregistrer_PDF()
Dim i&
For i = 2 To Sheets.Count
  With Sheets(i).PageSetup
    .LeftMargin = Application.InchesToPoints(0)
    .RightMargin = Application.InchesToPoints(0)
    .TopMargin = Application.InchesToPoints(0)
    .BottomMargin = Application.InchesToPoints(0)
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
  End With
  Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\*****\Documents\" & Sheets(i).Name & ".pdf"
Next
End Sub

A+

Martial
 

Pièces jointes

  • Imprimer en PDF.xlsm
    30.8 KB · Affichages: 741
  • Imprimer en PDF.xlsm
    30.8 KB · Affichages: 563
  • Imprimer en PDF.xlsm
    30.8 KB · Affichages: 674

bast0504

XLDnaute Occasionnel
Re : Macro VBA Imprimer fichier excel en PDF

Bonjour Yaloo, bonjour forum,

Merci pour ta solution qui fonctionne.

Est-il possible d'avoir l'impression des onglets en un seul .pdf car la macro imprime chaque onglet dans un .pdf différent .

De plus est il possible de donner le nom de mon pdf avec le titre se trouvant dans l'onglet "Règles" cellule H2 ?

Merci bcp
 

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Imprimer fichier excel en PDF

Bonjour bast0504, le forum,

Vois le fichier ci-dessous, ça doit faire ce que tu veux. Pour le titre, j'ai mis la cellule C2 car il y avait indiqué Titre du Rapport PDF alors que dans la cellule H2 c'était la date d'aujourd'hui.
Si c'est bien la date du jour que tu veux en titre, il faudra procéder différemment.

A te relire

Martial
 

Pièces jointes

  • Imprimer en PDF.xlsm
    34.6 KB · Affichages: 1 045
  • Imprimer en PDF.xlsm
    34.6 KB · Affichages: 741
  • Imprimer en PDF.xlsm
    34.6 KB · Affichages: 875

bast0504

XLDnaute Occasionnel
Re : Macro VBA Imprimer fichier excel en PDF

Re-Yaloo

En effet je voulais ajouter la date du jour mais je l'ai simplement insérer à une cellule et elle ressort bien dans le titre.

Ta macro est superbe surtout qu'il est possible de préciser les onglets que je veux imprimer. Sinon

- Est il possible de laisser le pdf imprimer ouvert sans l'enregistrer directement à un emplacement de manière à ce que l'utilisateur est une vu du pdf imrpimé et de lui même l'enregistrer dans le fichier qu'il voudra

- Est ce que la macro peut centrer et "zoomer" ce qu'elle imprime ?

Merci encore yaloo pour le temps que tu me consacre
 

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Imprimer fichier excel en PDF

Re,

- Est il possible de laisser le pdf imprimer ouvert sans l'enregistrer directement à un emplacement de manière à ce que l'utilisateur est une vu du pdf imrpimé et de lui même l'enregistrer dans le fichier qu'il voudra
Ouvrir le fichier ça doit être possible, mais il faut l'avoir enregistré avant, me semble-t-il.

- Est ce que la macro peut centrer et "zoomer" ce qu'elle imprime ?
Je n'ai pas compris ta demande, actuellement les feuilles sont mises à dimension de façon a avoir tout l'onglet sur une seule page. Tu veux faire un zoom uniquement sur une partie des cellules ?

A te relire

Martial
 

bast0504

XLDnaute Occasionnel
Re : Macro VBA Imprimer fichier excel en PDF

Re,

Pour ma première demande, je serai amené à envoyer mon fichier à des novices en excel qui ne pourront pas spécifier le chemin du répertoire. Raison pour laquelle je préfère leur laisser la main sur le lieu d'enregistrement

Pour ma seconde demande ce que je voulais dire c'est que le contenu de l'onglet imprimé est certes sur une seule page comme je le voulais mais pas toujours centré (j'ai appliqué la macro sur plusieurs autres fichiers). Est il possible de rajouter une ligne pour centrer ce contenu ?

Merci yaloo
 

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Imprimer fichier excel en PDF

Re,

Voici ton fichier modifié en conséquence.

A+
 

Pièces jointes

  • Imprimer en PDF.xlsm
    37.7 KB · Affichages: 630
  • Imprimer en PDF.xlsm
    37.7 KB · Affichages: 447
  • Imprimer en PDF.xlsm
    37.7 KB · Affichages: 528

bast0504

XLDnaute Occasionnel
Re : Macro VBA Imprimer fichier excel en PDF

Bonsoir Yaloo, Bonsoir Forum

Merci pour ton code vba très performant.

je voudrais revenir sur les 2 derniers points:

-j'ai mis en pièce jointe un pdf dans lequel la page 4 n'est pas centrée mais orientée à droite. Comment ajuster la macro pour la recentrée ?

-Serait-il possible d ajuster la macro suivante afin d''ouvrir le PDF directement après l'impression sans proposer de l'enregistrer ?

PHP:
Sub Enregistrer_1_seul_PDF()
Dim sh As Worksheet, i&
For i = 2 To Sheets.Count
  With Sheets(i).PageSetup
    .LeftMargin = Application.InchesToPoints(0)
    .RightMargin = Application.InchesToPoints(0)
    .TopMargin = Application.InchesToPoints(0)
    .BottomMargin = Application.InchesToPoints(0)
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
  End With
Next
  Set sh = ActiveSheet
  Sheets(Array("Finacement 1", "Finacement 2", "Finacement 3")).Select
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\ & Sheets(1).[C2].Value & ".pdf"
  sh.Select
End Sub
Merci yaloo pour toutes tes propositions
 

Pièces jointes

  • Titre du Rapport pdf.pdf
    94.4 KB · Affichages: 311
  • Imprimer en PDF-3.xlsm
    36.4 KB · Affichages: 443
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Imprimer fichier excel en PDF

Re,

Pour le centrage, il ne faut pas de colonnes vides à gauche, sinon tu déséquilibres toute la page.
Excel part du principe (et il n'a pas tord) que toutes tes colonnes sont remplies (sinon pourquoi avoir des colonnes) et donc la page est centrée de la première colonne jusqu'à la dernière colonne remplie.

Pour ouvrir ton fichier, tu es obligé de l'enregistrer (je ne connais pas de méthode pour passer outre) et ensuite tu peux l'afficher.
Vois avec ces lignes
VB:
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Windows\Temp\" & Sheets(1).[C2].Value & ".pdf"
  ActiveWorkbook.FollowHyperlink Address:="C:\Windows\Temp\" & Sheets(1).[C2].Value & ".pdf"
ton fichier sera enregistré dans le répertoire temp de windows.

A te relire

Martial
 

bast0504

XLDnaute Occasionnel
Re : Macro VBA Imprimer fichier excel en PDF

Bonjour Yaloo, Bonjour Forum

Merci pour ton retour très bénéfique

Pour ton information j'ai réglé le problème du centrage en définissant les zones d'impression et apparemment grâce à ça tout est centré !!!

J'ai intégré les deux lignes que tu m'as donné et le fichier s'ouvre comme je le voulais. Mais quelle est la partie du code qui fait ouvrir le fichier PDF ?

VB:
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Windows\Temp\" & Sheets(1).[C2].Value & ".pdf"
  ActiveWorkbook.FollowHyperlink Address:="C:\Windows\Temp\" & Sheets(1).[C2].Value & ".pdf"

Merci pour ton aide qui m'a beaucoup appris
 

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Imprimer fichier excel en PDF

Bonsoir bast0504,

La ligne du dessous pour enregistrer dans le répertoire Temp de Windows.
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Windows\Temp\" & Sheets(1).[C2].Value & ".pdf"
Si tu as un message d'alerte, tu peux surement le supprimer en plaçant devant cette ligne
Application.DisplayAlerts = 0

Cette ligne te permet d'ouvrir ton fichier PDF nouvellement créé.
ActiveWorkbook.FollowHyperlink Address:="C:\Windows\Temp\" & Sheets(1).[C2].Value & ".pdf"

A+

Martial
 

bast0504

XLDnaute Occasionnel
Re : Macro VBA Imprimer fichier excel en PDF

Bonsoir Yaloo, Bonsoir Forum

Merci pour tes précieuses informations

Je reviens car je n'arrive pas à désactiver le message d'alerte malgré l’intégration du code conseillé

PHP:
Application.DisplayAlerts = 0

Dois-je le mettre au début du code, de la procédure avec un code à la fin ?

Merci
 

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Imprimer fichier excel en PDF

Bonsoir bast0504,

Cette ligne est à mettre au début ou juste avant la ligne d'enregistrement du fichier.
Si tu ne peux pas enregistrer dans ce répertoire, il faut enregistrer ton fichier dans un autre répertoire. A toi de faire le choix.

A+

Martial
 

Discussions similaires

Réponses
8
Affichages
376

Statistiques des forums

Discussions
312 046
Messages
2 084 848
Membres
102 686
dernier inscrit
Franck6950