Boite de dialogue pour nombre d'impression.

Résolu
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -  
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. ergor Messages postés 157 Statut Membre 12
     
    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
    1. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
       
      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
    2. Zoul67 Messages postés 2001 Statut Membre 149
       
      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
    3. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
       
      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
    4. ergor Messages postés 157 Statut Membre 12
       
      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
    5. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
       
      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