Boite de dialogue pour nombre d'impression.

Résolu/Fermé
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - Modifié par Villette54 le 27/08/2013 à 08:51
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 27 août 2013 à 14:16
Bonjour,

J'ai sur un classeur Excel, un bouton qui me permet d'imprimer une feuille cachée du classeur.
Chaque clique sur le bouton permet de lancer une impression.
J'aimerais cependant effectuer un petit changement, j'aimerais avoir une boite de dialogue afin de de demander le nombre d'impression souhaitée !

Voici mon code actuel :

Sub Button8_Click()

If MsgBox("Êtes-vous sûr de vouloir imprimer la feuille pour les opérateurs ?", vbQuestion + vbYesNo, "Confirmation") = vbYes Then

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    Sheets("Impression").Visible = True
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    Sheets("Impression").Visible = False
    Sheets("Encodage").Range("A1").Select
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
Else: MsgBox "Impression annulé !"
End If
    
End Sub



Merci d'avance pour votre aide.

1 réponse

ergor Messages postés 149 Date d'inscription mercredi 23 janvier 2013 Statut Membre Dernière intervention 7 mai 2014 12
27 août 2013 à 10:22
Bonjour,


Créé une textbox (nommée textbox1) et essaye ca :

Sub Button8_Click()

If MsgBox("Êtes-vous sûr de vouloir imprimer la feuille pour les opérateurs ?", vbQuestion + vbYesNo, "Confirmation") = vbYes Then


    If TextBox1.Text = "" Then
    
        MsgBox "Entrer un nombre de copie"
    
    Else
        If IsNumeric(TextBox1.Value) = False Then
    
            MsgBox "Entrer une valeur numérique"

        Else
    
            Application.DisplayAlerts = False
            Application.ScreenUpdating = False
            
            Sheets("Impression").Visible = True
            ActiveWindow.SelectedSheets.PrintOut Copies:=TextBox1.Value, Collate:=True, _
                IgnorePrintAreas:=False
            Sheets("Impression").Visible = False
            Sheets("Encodage").Range("A1").Select
            
            Application.DisplayAlerts = True
            Application.ScreenUpdating = True
            
        End If
    End If
            
Else: MsgBox "Impression annulé !"
End If
     

0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
27 août 2013 à 10:49
Merci pour votre réponse,

Mais je suis débutant en VBA, qu'entendez-vous par "Créé une textbox (nommée textbox1)" ? Et comment puis-je le faire ?

Merci d'avance.
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
27 août 2013 à 11:06
Bonjour,

ergor entend par là un formulaire utilisateur (appelé UserForm), dont tu peux faire le design avec la souris. Mais je pense qu'il y a plus simple avec un InputBox (qui est une sorte de UserForm prédéfini comme un MsgBox). Tu peux essayer :

Sub Button8_Click()
c=InputBox("Combien de copies voulez-vous imprimer ?")
While (c="" Or IsNumeric(c)=False)
c=InputBox("Combien de copies voulez-vous imprimer ?")
Wend
    
            Application.DisplayAlerts = False
            Application.ScreenUpdating = False
            
            Sheets("Impression").Visible = True
            ActiveWindow.SelectedSheets.PrintOut Copies:=c, Collate:=True, _
                IgnorePrintAreas:=False
            Sheets("Impression").Visible = False
            Sheets("Encodage").Range("A1").Select
            
            Application.DisplayAlerts = True
            Application.ScreenUpdating = True           

End Sub


Cela ne nécessite que la copie de ce code en remplacement de l'existant.
Désolé si ça plante (je n'ai pas essayé), fais-moi savoir si ça fonctionne.

A+
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 27/08/2013 à 11:32
Ok merci, effectivement ce n'est pas la première fois qu'on me parle d'un userform mais je n'ai jamais eu l'occasion d'en créer. (J'ai un message d'erreur à chaque fois que j'essaye : https://www.cjoint.com/c/CHBlt463YCc mais peu importe.

En revanche, pour ton code il fonctionne parfaitement mais j'aimerais savoir si une petite modification est possible ? Est-il possible d'avoir une msgbox si la valeur entrée n'est pas un nombre entier ou qu'elle est vide ?

Par contre je viens de me rendre compte que mon bouton n'imprimait pas la feuille "impression" mais la feuille où est situé le bouton, il va falloir que je regarde à ça aussi...

Merci.
0
ergor Messages postés 149 Date d'inscription mercredi 23 janvier 2013 Statut Membre Dernière intervention 7 mai 2014 12
27 août 2013 à 11:31
Dans ce cas fais ceci :

Sub Button8_Click()
c=InputBox("Combien de copies voulez-vous imprimer ?")
While (c="" Or IsNumeric(c)=False)
c=InputBox("Combien de copies voulez-vous imprimer ?")
Wend

If c = "" Then

MsgBox "Entrer un nombre de copie"

Else
If IsNumeric(c) = False Then

MsgBox "Entrer une valeur numérique"

Else

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Sheets("Impression").Visible = True
ActiveWindow.SelectedSheets.PrintOut Copies:=c, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Impression").Visible = False
Sheets("Encodage").Range("A1").Select

Application.DisplayAlerts = True
Application.ScreenUpdating = True

end if

End Sub
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
27 août 2013 à 12:40
Huum, il y'a toujours le même problème : si je rentre une valeur non numérique le userform se recharge mais la msgbox n'apparaît pas.

Autre petit soucis, si je clique sur annuler ou fermer le userform se recharge à l'infini (impossible de renoncer à l'impression une fois qu'on a cliqué sur le bouton)

Code actuel :
Sub Button8_Click()

c = InputBox("Combien de copies voulez-vous imprimer ?")
While (c = "" Or IsNumeric(c) = False)
c = InputBox("Combien de copies voulez-vous imprimer ?")
Wend

If c = "" Then

    MsgBox "Entrer un nombre de copie"

    Else
        If IsNumeric(c) = False Then

    MsgBox "Entrer une valeur numérique"

                Else
            Application.DisplayAlerts = False
            Application.ScreenUpdating = False
            
    Sheets("Impression").Visible = True
    Sheets("Impression").Select
    
    ActiveWindow.SelectedSheets.PrintOut Copies:=c, Collate:=True, _
    IgnorePrintAreas:=False
        
    Sheets("Impression").Visible = False
    
    Sheets("Encodage").Range("A1").Select
            
            Application.DisplayAlerts = True
            Application.ScreenUpdating = True
    
    MsgBox "Impression lancée avec succés"
    
End If
End Sub
0