Imprimer une sélection de feuilles excel dans un seul doc

Fermé
hergy - 3 oct. 2017 à 01:26
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 3 oct. 2017 à 12:07
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"):

 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:

2 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
3 oct. 2017 à 07:09
Bonjour,

Dans un seul doc: une seule feuille ou .........................???
0
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.
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
Modifié le 3 oct. 2017 à 12:15
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:
 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
0