VBA : Paramétrer le pilote d'impression

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 ! ;)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa