Bouton VBA pour imprimer une feuille

BLACKHAYES

XLDnaute Impliqué
bonjourle forum,

J'aimerais connaitre le code VBA pour creer un bouton VBA "imprimer" pour imprimer une feuille excel, ca jusque la je sais faire, par contre ce que je ne sais pas, c'est inclure une demande, qui, quand on clic sur le bouton "imprimer" une fenetre s'ouvre pour me demander le nombre de copie que je souhaite imprimer de cette feuille.

Merci d'avance
 

Pièces jointes

  • Classeur1.xls
    21.5 KB · Affichages: 145
  • Classeur1.xls
    21.5 KB · Affichages: 100
  • Classeur1.xls
    21.5 KB · Affichages: 130

hokousai

XLDnaute Nouveau
Bonsoir le Forum,
Je souhaiterais utiliser le code

VB:
Private Sub CommandButton1_Click()
Dim copies
copies = Abs(Val(InputBox("NOMBRE DE COPIES ?", "Indiquer la quantité désirée...")))
If copies Then ActiveWindow.SelectedSheets.PrintOut Copies:=copies
End Sub
Comment faire pour lui intégrer les feuilles à imprimer
Exemple: imprimer la feuille 1 et 3
par avance Merci
 

job75

XLDnaute Barbatruc
Bonjour hokousai, le forum,

La macro imprime les "SelectedSheets" donc sélectionnez-les :
VB:
Private Sub CommandButton1_Click()
Dim copies
copies = Abs(Val(InputBox("NOMBRE DE COPIES ?", "Indiquer la quantité désirée...")))
Sheets(Array(1, 3)).Select
If copies Then ActiveWindow.SelectedSheets.PrintOut copies:=copies
End Sub
Les 2 feuilles doivent être visibles sinon utilisez :
VB:
Private Sub CommandButton1_Click()
Dim copies, Sh As Object, vis%
copies = Abs(Val(InputBox("NOMBRE DE COPIES ?", "Indiquer la quantité désirée...")))
If copies = 0 Then Exit Sub
For Each Sh In Sheets(Array(1, 3))
    vis = Sh.Visible
    Sh.Visible = xlSheetVisible
    Sh.PrintOut copies:=copies
    Sh.Visible = vis 'état initial
Next
End Sub
Bonne journée.
 

hokousai

XLDnaute Nouveau
Bonjour le forum,
@job75,
Je souhaiterai utiliser dans un UserForm de mon classeur, une partie du code ci-dessous :
VB:
Private Sub CommandButton1_Click()
Dim copies, Sh As Object, vis%
copies = Abs(Val(InputBox("NOMBRE DE COPIES ?", "Indiquer la quantité désirée...")))
If copies = 0 Then Exit Sub
For Each Sh In Sheets(Array(1, 3))
    vis = Sh.Visible
    Sh.Visible = xlSheetVisible
    Sh.PrintOut copies:=copies
    Sh.Visible = vis 'état initial
Next
End Sub
Qui me permettra d’Imprimer des feuilles masquées, Comme vous l’avez indiqué ici #17
Mais je ne sais pas où l’intégrer et surtout je ne sais pas le faire.
Pour cela, je sollicite votre aide.
Merci par avance
Ps : Voici les codes du UserForm :
VB:
Private Sub apercu_Click()
Dim i As Integer
UserForm1.Hide
With ListBox1
  For i = 0 To .ListCount - 1
    If .Selected(i) Then Sheets(.List(i)).PrintPreview
  Next
End With
UserForm1.Show
End Sub
Private Sub imprimer_Click()
Dim i As Integer
UserForm1.Hide
If Application.Dialogs(xlDialogPrinterSetup).Show = False Then
    Exit Sub
Else
    With ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then Sheets(.List(i)).PrintOut Copies:=TextBox1.Value
        Next
    End With
    UserForm1.Show
End If
End Sub

Private Sub Label1_Click()
End Sub
Private Sub Label2_Click()
End Sub
Private Sub Label3_Click()
End Sub
Private Sub Label4_Click()
End Sub
Private Sub ListBox1_Click()
For i = 0 To .ListCount - 1
   If ListBox1.Selected(i) Then Sheets(.List(i)).Select
   Next
End With
End Sub
Private Sub ListBox2_Click()
End Sub
Private Sub UserForm_Initialize()
Dim S As Worksheet
sh = Array("Index", "Paramètres")
ListBox1.MultiSelect = fmMultiSelectExtended
For Each S In Worksheets
t = Application.Match(S.Name, sh, 0)
    If IsError(t) Then
        ListBox1.AddItem S.Name
    End If
Next
TextBox1 = 0
End Sub
Merci.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, hokousai, job75

hokousai
Pourquoi ne pas avoir continuer dans le fil que tu avais créé pour l'occasion?
(Ce fil-ci dormait tranquillement depuis 2013)
 

hokousai

XLDnaute Nouveau
Re, Staple1600, le forum,
@Staple1600,
Pour avoir une réponse de @job75.
J’ai testé avec ceci :
VB:
Private Sub imprimer_Click()
Dim Fe As Worksheet
Application.ScreenUpdating = False
For Each Fe In Worksheets
If Fe.Visible = xlSheetHidden Then
Fe.Visible = xlSheetVisible
Fe.PrintOut
Fe.Visible = xlSheetHidden
End If
Next Fe
Application.ScreenUpdating = False
End Sub
Cela fonctionne.
Il me manque plus qu'à résoudre l'aperçu des feuilles masqué.
PS: je vais poster sur l'autre fil.
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
176

Statistiques des forums

Discussions
311 737
Messages
2 082 036
Membres
101 878
dernier inscrit
1475214