Imprimer une sélection de feuilles excel dans un seul doc
hergy
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai mis en place un code vba pour imprimer des zones de feuilles au choix dans un seul document. Mais ce code ne fonctionne pas.
Description de la Procédure:
Mon fichier comporte 5 feuilles de travail. Sur chaque feuille, j'ai défini une zone d'impression.
Par ailleurs, il existe une feuille supplémentaire que j'ai nommé "Impressions". Sur la feuille "Impressions", j'ai listé les 5 feuilles de travail en mettant un bouton CheckBox à chaque ligne (Contrôle Activex). L'utilisateur peut alors choisir les feuilles qu'il veut imprimer en cochant la case. Par la suite, l'utilisateur entre dans un champ TexBox (Contrôle Activex) un numéro de page (c'est le premier numéro de page du document imprimé). Enfin, il clique sur le bouton "Imprimer" (Contrôle Activex). Après avoir cliqué sur le bouton "Imprimer", une boîte de dialogue s'affiche afin de lui permettre de choisir une imprimante; l'utilisateur choisit l'imprimante et clique sur le bouton Ok de la boîte de dialogue, l'impression est lancée.
Le code vba pour la procédure ci-dessus est le suivant (code inséré dans la feuille "Impressions"):
J'ai essayé d'imprimer 2 feuilles avec PDFCreator, mais voici se qui se passe:
1- J'obtiens 2 documents PDF d'une page chacun au lieu d'un PDF de deux pages.
2- Les numéros de page ne s'incrémentent pas. Chaque page conserve le même numéro entré par l'utlisateur (probablement la conséquence du problème 1 ci-dessus).
3- En cliquant sur le bouton "Annuler" dans la boîte de dialogue qui permet de choisir une imprimante, l'impression est quand même lancée.
Besoin d'aide SVP.
PS: Peut on afficher un message d'erreur quand l'utilisateur clique sur le bouton "Imprimer" sans avoir sélectionné une feuille ?
J'ai mis en place un code vba pour imprimer des zones de feuilles au choix dans un seul document. Mais ce code ne fonctionne pas.
Description de la Procédure:
Mon fichier comporte 5 feuilles de travail. Sur chaque feuille, j'ai défini une zone d'impression.
Par ailleurs, il existe une feuille supplémentaire que j'ai nommé "Impressions". Sur la feuille "Impressions", j'ai listé les 5 feuilles de travail en mettant un bouton CheckBox à chaque ligne (Contrôle Activex). L'utilisateur peut alors choisir les feuilles qu'il veut imprimer en cochant la case. Par la suite, l'utilisateur entre dans un champ TexBox (Contrôle Activex) un numéro de page (c'est le premier numéro de page du document imprimé). Enfin, il clique sur le bouton "Imprimer" (Contrôle Activex). Après avoir cliqué sur le bouton "Imprimer", une boîte de dialogue s'affiche afin de lui permettre de choisir une imprimante; l'utilisateur choisit l'imprimante et clique sur le bouton Ok de la boîte de dialogue, l'impression est lancée.
Le code vba pour la procédure ci-dessus est le suivant (code inséré dans la feuille "Impressions"):
Private Sub MiseEnPageImpression(Feuille, UneOrientation)
'Mise en page avant impression d'une feuille de calcul
'UneOrientation=0 ne rien faire
'UneOrientation=1 forcer en paysage
'UneOrientation=2 forcer en portrait
On Error Resume Next
Worksheets.Item(Feuille).PageSetup.RightHeader = ""
Worksheets.Item(Feuille).PageSetup.LeftHeader = "" + Chr(10) & "&G"
Worksheets.Item(Feuille).PageSetup.CenterFooter = ""
Worksheets.Item(Feuille).PageSetup.RightFooter = "&P"
Worksheets.Item(Feuille).PageSetup.LeftFooter = ""
Worksheets.Item(Feuille).PageSetup.FirstPageNumber = TextBoxNumeroPage.Value
Worksheets.Item(Feuille).PageSetup.Zoom = False
If UneOrientation = 1 Then
Worksheets.Item(Feuille).PageSetup.Orientation = xlLandscape
End If
If UneOrientation = 2 Then
Worksheets.Item(Feuille).PageSetup.Orientation = xlPortrait
End If
End Sub
Public Sub ImprimerZonePage(Feuille, PlageStr As String, Orientation)
'Imprimer une zone dans une page d'une feuille de calcul
Dim Plage As Range
Call MiseEnPageImpression(Feuille, Orientation)
NumeroPage = NumeroPage + 1
Set Plage = Worksheets.Item(Feuille).Range(PlageStr)
Plage.PrintOut
End Sub
Private Sub CheckBoxReport_Click()
If CheckBoxReport.Value Then
CheckBox1.Value = True
CheckBox2.Value = True
CheckBox3.Value = True
CheckBox4.Value = True
CheckBox5.Value = True
Else
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
CheckBox5.Value = False
End If
End Sub
Private Sub BoutonImprimer_Click()
Application.Dialogs(xlDialogPrinterSetup).Show
Application.StatusBar = "Impression en cours...patientez"
NumeroPage = TextBoxNumeroPage
If CheckBox1.Value = True Then
Call ImprimerZonePage(("Report_1"), "$A$1:$N$90", 0)
End If
If CheckBox2.Value = True Then
Call ImprimerZonePage(("Report_2"), "$A$1:$N$90", 0)
End If
If CheckBox3.Value = True Then
Call ImprimerZonePage(("Report_3"), "$A$1:$N$90", 0)
End If
If CheckBox4.Value = True Then
Call ImprimerZonePage(("Report_4"), "$A$1:$N$90", 0)
End If
If CheckBox5.Value = True Then
Call ImprimerZonePage(("Report_5"), "$A$1:$N$90", 0)
End If
Worksheets.Item("Impressions").Activate
Application.StatusBar = ""
End Sub
J'ai essayé d'imprimer 2 feuilles avec PDFCreator, mais voici se qui se passe:
1- J'obtiens 2 documents PDF d'une page chacun au lieu d'un PDF de deux pages.
2- Les numéros de page ne s'incrémentent pas. Chaque page conserve le même numéro entré par l'utlisateur (probablement la conséquence du problème 1 ci-dessus).
3- En cliquant sur le bouton "Annuler" dans la boîte de dialogue qui permet de choisir une imprimante, l'impression est quand même lancée.
Besoin d'aide SVP.
PS: Peut on afficher un message d'erreur quand l'utilisateur clique sur le bouton "Imprimer" sans avoir sélectionné une feuille ?
A voir également:
- Excel imprimer 2 pages par feuille
- Imprimer tableau excel sur une page - Guide
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Excel trier par ordre croissant chiffre - Guide
- Comment imprimer en a5 sur une feuille a4 - Guide
2 réponses
Dans un seul doc: quand les feuilles sont imprimées, elles doivent constituer un seul document. Autrement dit, si j'imprime 3 feuilles, j'obtiens un document de 3 pages.
Re,
Le code pour "impression" PDF un seul doc avec PDFCreator est tout fait different de ce que vous avez ecrit pour une imprimante "normale"
Revoir aussi pour la procedure mise en page
un seul doc PDF pour x feuilles:
code fait avec enregistreur de macro, qu'il vous faudra adapter en fonction des choix feuilles
fichier pdf optenu:https://www.cjoint.com/c/GJdkhDNDzvf
Le code pour "impression" PDF un seul doc avec PDFCreator est tout fait different de ce que vous avez ecrit pour une imprimante "normale"
Revoir aussi pour la procedure mise en page
un seul doc PDF pour x feuilles:
copies:=1, Collate:=True
code fait avec enregistreur de macro, qu'il vous faudra adapter en fonction des choix feuilles
Sub Macro1() ' ' Macro1 Macro ' ' Sheets(Array("Report_1", "Report_2", "Report_3", "Report_4", "Report_5")).Select Sheets("Report_1").Activate Range("A1:N90").Select Application.PrintCommunication = False With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.7) .RightMargin = Application.InchesToPoints(0.7) .TopMargin = Application.InchesToPoints(0.75) .BottomMargin = Application.InchesToPoints(0.75) .HeaderMargin = Application.InchesToPoints(0.3) .FooterMargin = Application.InchesToPoints(0.3) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 .PrintErrors = xlPrintErrorsDisplayed .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With Application.PrintCommunication = True ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False End Sub
fichier pdf optenu:https://www.cjoint.com/c/GJdkhDNDzvf