Macro impression avec choix des feuilles
Bonjour le forum,
Je dispose d'une macro qui me permet d'imprimer les feuilles de mon classeur Excel avec la possibilité de choisir les feuilles à imprimer grâce à un userform. Elle fonctionne de la manière suivante:
1 - Je lance la macro grâce au bouton
2 - Je choisis les feuilles à imprimer grâce à l'userform puis je clique sur imprimer
3 - Ensuite un menu s'ouvre pour finaliser le paramétrage (choix de l'imprimante, impression en couleur ou NB...)
4 - Enfin pour terminer, je clique de nouveau sur imprimer.
Le problème c'est que je suis obligé de répéter la 3 ème et 4 ème étape pour chacune des feuilles à imprimer. Ainsi lorsque mon classeur aura 10 feuilles par exemple à imprimer, j'aurai à finaliser le paramétrage 10 fois et à cliquer de nouveau sur imprimer une dizaine de fois.
Auriez-vous une solution pour remédier à ce problème?
Ci-joint mon fichier excel avec ma macro.
Je vous remercie d'avance pour votre aide
Bonjour,
sans connaitre les modifications à faire à l'imprimante
à tester,
Sub ImpressionChoix()
Dim feuille, i As Integer
feuille = Array("Un", "Deux", "Trois")
Impression.Hide
'Impression Feuille
For i = 1 To 3
If Impression.Controls("CheckBox" & i).Value = True Then
Application.Goto Sheets(feuille(i - 1)).Range("Zone_d_impression")
ActiveSheet.PrintPreview 'remplacer par .Print lorsque les test sont terminer
End If
Next
Impression.Show
End Sub
une autre possibilité est de tous coder, choix d'imprimante et Mise en page
Sub ImpressionChoix()
Dim feuille, i As Integer
Dim sCurPrinter As String
sCurPrinter = Application.ActivePrinter ' Conserver le nom de l'imprimante en cours
Application.ActivePrinter = "HP Officejet Pro L7700 Series" ' changer d'imprimante
Call Print_Setup 'modifier les paramettres d'impression
feuille = Array("Un", "Deux", "Trois")
Impression.Hide
'Impression Feuille
For i = 1 To 3
If Impression.Controls("CheckBox" & i).Value = True Then
Application.Goto Sheets(feuille(i - 1)).Range("Zone_d_impression")
ActiveSheet.PrintPreview 'PrintOut après les test
End If
Next
Application.ActivePrinter = sCurPrinter ' Remettre l'imprimante original.
Impression.Show
End Sub
Sub Print_Setup()
Application.ScreenUpdating = False
With ActiveSheet.PageSetup
.DisplayPageBreaks = False
.PrintTitleRows = "$1:$4"
.LeftHeader = ""
.CenterHeader = "Preliminary"
.LeftFooter = "&8&F" & Chr(10) & "&A"
.CenterFooter = "&8&P of &N"
.RightFooter = "&8&D" & Chr(10) & "&T"
.LeftMargin = Application.InchesToPoints(0.5)
.RightMargin = Application.InchesToPoints(0.5)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(1)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.05)
.CenterHorizontally = True
.Orientation = xlLandscape
.FirstPageNumber = xlAutomatic
.FitToPagesWide = 1
.FitToPagesTall = 20
End With
Application.ScreenUpdating = True
End Sub
Bonjour sabV,
Je te remercie beaucoup pour ta réponse. Je vais opter pour la première solution qui me paraît plus simple et plus adaptée à mon cas