Userform imprimer plusieurs pages

marjo_38

XLDnaute Nouveau
Bonjour,

J'ai un fichier excel où je crée des factures. Il y a un userform pour imprimer ces factures dans lequel j'indique le nombre de duplicata et d'original que je souhaites imprimer. Cependant,il arrive que cette facture soit sur 2 pages et il y a toujours plusieurs exemplaires et je voudrais que la page 1 et la page 2 sortent à la suite et non plusieurs pages 1 et plusieurs pages 2.
Voici ma macro :

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Imprimer.Hide
Range("T1").Value = Imprimer.ComboBox1.Value
Range("T2").Value = Imprimer.ComboBox2.Value
If Imprimer.ComboBox1.Value <> "" Then
Range("c4:eek:69").Select
Range("m5") = "[Duplicata]"
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
Selection.PrintOut Copies:=[T1], Collate:=True
If Range("F31") <> "" Then
Range("c73:O139").Select
Range("m5") = "[Duplicata]"
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
Selection.PrintOut Copies:=[T1], Collate:=True
End If
If Range("F131") <> "" Then
Else: Range("T1") = ""
End If
If Imprimer.ComboBox2.Value = "" Then
Range("T2") = ""
ElseIf ComboBox2.Value <> "" Then
Range("M5") = "[Original]"
Range("c4:eek:69").Select
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
Selection.PrintOut Copies:=[T2], Collate:=True
If Range("F131") <> "" Then
Range("M5") = "[Original]"
Range("c73:eek:139").Select
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
Selection.PrintOut Copies:=[T2], Collate:=True
End If
Range("A3").Select
End Sub

Merci pour votre aide.

Marjo_38
 

Cousinhub

XLDnaute Barbatruc
Re : Userform imprimer plusieurs pages

Bonsoir,
pas évident, sans fichier....
Regarde l'idée suivante :

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Imprimer.Hide
Range("T1").Value = Imprimer.ComboBox1.Value
Range("T2").Value = Imprimer.ComboBox2.Value
If Imprimer.ComboBox1.Value <> "" Then
    With ActiveSheet
        .PageSetup.PrintArea = "$C$4:$O$69"
        Range("M5") = "[Duplicata]"
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
        For y = 1 To [T1]
            For x = 1 To .HPageBreaks.Count + 1
                .PrintOut From:=x, To:=x, Copies:=1, Collate:=True
            Next x
        Next y
    End With
End If
If Range("F31") <> "" Then
    With ActiveSheet
        .PageSetup.PrintArea = "$C$73:$O$139"
        Range("M5") = "[Duplicata]"
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
        For y = 1 To [T1]
            For x = 1 To .HPageBreaks.Count + 1
                .PrintOut From:=x, To:=x, Copies:=1, Collate:=True
            Next x
        Next y
    End With
End If
If Range("F131") <> "" Then
Else: Range("T1") = ""
End If
If Imprimer.ComboBox2.Value = "" Then
Range("T2") = ""
ElseIf ComboBox2.Value <> "" Then
Range("M5") = "[Original]"
    With ActiveSheet
        .PageSetup.PrintArea = "$C$4:$O$69"
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
        For y = 1 To [T2]
            For x = 1 To .HPageBreaks.Count + 1
                .PrintOut From:=x, To:=x, Copies:=1, Collate:=True
            Next x
        Next y
    End With
If Range("F131") <> "" Then
    With ActiveSheet
        .PageSetup.PrintArea = "$C$73:$O$139"
        Range("M5") = "[Original]"
Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
        For y = 1 To [T2]
            For x = 1 To .HPageBreaks.Count + 1
                .PrintOut From:=x, To:=x, Copies:=1, Collate:=True
            Next x
        Next y
    End With
End If
End If
Range("A3").Select
End Sub

Peut-être.....
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Userform imprimer plusieurs pages

Bonjour à tous,
Bienvenue à marjo_38 :),

Tu es entre de bonnes mains avec BH²
Tu as deux avantages : ton âge et ton département, si tant est que le _38 soit pour l'Isère...

Deux chiffres qu'il apprécie particulièrement ( 23 pour l'âge et le 38 pour le département)

A++ mon ami BH² :)
A+ marjo_38 ;)
A+ à tous
 

marjo_38

XLDnaute Nouveau
Re : Userform imprimer plusieurs pages

Bonjour,

J'ai essayé ton code mais ca ne marche pas comme je voudrais.
J'ai essayé d'imprimer mais les pages 1 sortent toutes à la suite et ensuite toutes les pages 2.
Il m'arrive souvent d'avoir 10 exemplaires et c'est pour ne pas avoir à les remettre dans l'ordre à chaque fois.
Je ne peux pas joindre de fichier car c'est confidentiel mais j'ai modifié un peu mon code pour plus de compréhénsion.

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Imprimer.Hide
'Nombre d'impression en duplicata
Range("T1").Value = Imprimer.ComboBox1.Value
'Nombre d'impression en original
Range("T2").Value = Imprimer.ComboBox2.Value
If Imprimer.ComboBox1.Value <> "" Then
   Range("Page1").Select
    Range("m5") = "[Duplicata]"
    Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
    Selection.PrintOut Copies:=[T1], Collate:=True
    End If
    'Si 2ème page à imprimer en duplicata
    If Range("F131") <> "" Then
     Range("Page2").Select
    Range("m5") = "[Duplicata]"
    Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
    Selection.PrintOut Copies:=[T1], Collate:=True
    End If
    If Imprimer.ComboBox2.Value = "" Then
    Range("T2") = ""
    ElseIf ComboBox2.Value <> "" Then
    Range("M5") = "[Original]"
    Range("Page1").Select
    Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
    Selection.PrintOut Copies:=[T2], Collate:=True
    'Si 2ème page à imprimer en original
    If Range("F131") <> "" Then
     Range("M5") = "[Original]"
 Range("Page2").Select
    Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
    Selection.PrintOut Copies:=[T2], Collate:=True
     End If
     End If
    Range("A3").Select
End Sub
 

marjo_38

XLDnaute Nouveau
Re : Userform imprimer plusieurs pages

Bonjour NoviceAG,

Oui copie assemblée est coché. Mon problème ne dépend pas de ca.
Mais ca y est j'ai trouvé un code qui me permet d'imprimer page 1 puis page 2 le voici au cas ou ca puisse servir à quelqu'un :

Code:
Private Sub CommandButton1_Click()
Dim Nbdup As Byte, Nbori As Byte
 
Imprimer.Hide
Application.ScreenUpdating = False
 
'Nombre d'impression en duplicata
Nbdup = Imprimer.ComboBox1.Value
'Nombre d'impression en original
Nbori = Imprimer.ComboBox2.Value
 
'Sélection de la plage à imprimer
If Range("F131") <> "" Then
    Range("Page1, Page2").Select
Else
    Range("Page1").Select
End If
 
'Impression duplicata
If Nbdup > 0 Then
    Range("m5") = "[Duplicata]"
    Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
    Selection.PrintOut Copies:=Nbdup, Collate:=True
End If
 
'Impression original
If Nbori > 0 Then
    Range("m5") = "[Original]"
    Application.ActivePrinter = "\\gresrvr01\GRE_HP_4350_59A sur Ne02:"
    Selection.PrintOut Copies:=Nbori, Collate:=True
End If
 
Range("A3").Select
Application.ScreenUpdating = True
 
End Sub
 

Discussions similaires

Réponses
16
Affichages
2 K

Statistiques des forums

Discussions
312 498
Messages
2 088 996
Membres
104 001
dernier inscrit
dessinbecm