VBA : Paramétrer le pilote d'impression

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

troopers87

XLDnaute Occasionnel
Bonjour,

je souhaite créer une macro qui permette, par l'appui sur un simple bouton, de lancer l'impression d'une plage donnée selon des paramètres particuliers. L'idée sous-jacente est que n'importe quel utilisateur peut imprimer mon fichier selon un format normé sans intervention de sa part.

Mon problème réside dans la mise en page de sortie : spontanément, je lance l'enregistreur de macro puis je fais : Fichier -> Mise en page, là je saisi mes paramètres, puis je copie le code résultant dans ma macro... Le problème réside dans le fait que l'imprimante présente un format de sortie qui prend le pas sur ma mise en page !

D'où ma question : comment puis-je paramétrer l'imprimante à partir de ma macro ?

Voici ce à quoi je suis arrivé :

Sub Impression_POLE()
'cette macro permet de lancer l'impression des rapports par ANNEES

'paramètres de l'impression obtenu par Fichier -> Mis en page
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "$A$1:$R$112"
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.393700787401575)
.RightMargin = Application.InchesToPoints(0.393700787401575)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA3
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 2
.PrintErrors = xlPrintErrorsDisplayed
End With

'sélection de l'ANNEE à imprimer et nombre de copies ;
If [T3] = 2011 Then [A1:R110].PrintOut copies:=[U3]
'PrintOut désigne l'impression de la plage définie précédement
If [T3] = 2012 Then [A111:R220].PrintOut copies:=[U3]

End Sub

Merci d'avance pour toute réponse constructive ! 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
106
Réponses
13
Affichages
2 K
Réponses
5
Affichages
929
Réponses
0
Affichages
1 K
Retour