XL 2019 Ajouter un " aperçu avant impression " à ce code

Yann71

XLDnaute Occasionnel
Bonjour, me voici confronté à ce problème. J'ai un Userform où se trouve des cases à cocher
permettant de choisir les feuilles à imprimer. Mais le problème réside qu'avec ce code
je n'ai pas la possibilité de faire un aperçu avant impression. J'ai déjà chercher ici et ailleurs,
mais rien de fonctionne. Merci pour votre futur aide.


'Private Sub UserForm_Activate()
'With frm_imprimer_janvier
'.StartUpPosition = 3
'.Width = Application.Width
'.Height = Application.Height
'.Left = 0
'.Top = 0
'End With
'End Sub


'***********************************************

Private Sub CheckBox4_Click() 'N°4
If CheckBox4.Value = True Then 'Si coché ...
Range("bd2") = "Coché"
Else 'Si non coché ...
Range("bd2") = "Non coché"
End If
End Sub

Private Sub CheckBox5_Click() 'N°5
If CheckBox5.Value = True Then 'Si coché ...
Range("be2") = "Coché"
Else 'Si non coché ...
Range("be2") = "Non coché"
End If
End Sub

Private Sub CheckBox6_Click() 'N°6
If CheckBox6.Value = True Then 'Si coché ...
Range("bf2") = "Coché"
Else 'Si non coché ...
Range("bf2") = "Non coché"
End If
End Sub

Private Sub CheckBox7_Click() 'N°7
If CheckBox6.Value = True Then 'Si coché ...
Range("bg2") = "Coché"
Else 'Si non coché ...
Range("bg2") = "Non coché"
End If

End Sub

Private Sub CommandButton2_Click()

Dim Ind As Integer
For Ind = 1 To 7
If Me("CheckBox" & Ind).Value = True Then
Sheets(Sheets("Imprimer").Range("I" & 14 + Ind).Value).PrintOut Copies:=1
End If
Next Ind
End Sub



Private Sub CommandButton3_Click()

CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
CheckBox5.Value = False
CheckBox6.Value = False
CheckBox7.Value = False


End Sub

Private Sub UserForm_Initialize() 'Valeurs initiales des cases à cocher


TextBox1 = Sheets("Imprimer").Range("I15")
TextBox2 = Sheets("Imprimer").Range("I16")
TextBox3 = Sheets("Imprimer").Range("I17")
TextBox4 = Sheets("Imprimer").Range("I18")
TextBox5 = Sheets("Imprimer").Range("I19")
TextBox6 = Sheets("Imprimer").Range("I20")
TextBox7 = Sheets("Imprimer").Range("I21")

If Range("BA2") = "Coché" Then
CheckBox1.Value = True
End If

If Range("BB2") = "Coché" Then
CheckBox2.Value = True
End If

If Range("BC2") = "Coché" Then
CheckBox3.Value = True
End If

If Range("Bd2") = "Coché" Then
CheckBox4.Value = True
End If

If Range("Be2") = "Coché" Then
CheckBox5.Value = True
End If

If Range("Bf2") = "Coché" Then
CheckBox6.Value = True
End If

If Range("Bg2") = "Coché" Then
CheckBox7.Value = True
End If

End Sub

Private Sub CheckBox1_Click() 'N°1

If CheckBox1.Value = True Then 'Si coché ...
Range("BA2") = "Coché"
Else 'Si non coché ...
Range("BA2") = "Non coché"
End If
End Sub

Private Sub CheckBox2_Click() 'N°2
If CheckBox2.Value = True Then 'Si coché ...
Range("BB2") = "Coché"
Else 'Si non coché ...
Range("BB2") = "Non coché"
End If
End Sub

Private Sub CheckBox3_Click() 'N°3
If CheckBox3.Value = True Then 'Si coché ...
Range("BC2") = "Coché"
Else 'Si non coché ...
Range("BC2") = "Non coché"
End If
End Sub

Private Sub CommandButton1_Click()
Unload Me 'Fermeture

Range("BA1").Select
ActiveCell.FormulaR1C1 = "Non coché"
Range("BA1").Select
Selection.AutoFill Destination:=Range("BA1:BA2"), Type:=xlFillDefault
Range("BA1:BA2").Select
Selection.AutoFill Destination:=Range("BA1:BG2"), Type:=xlFillDefault
Range("BA1:BG2").Select
Range("A1").Select





End Sub
 

patricktoulon

XLDnaute Barbatruc
bonjour
il y a largement plus simple a faire
faut il avoir un exemple de fichier

en attendant ton fichier j'ai quand même fait un nettoyage de code
et pour info
PrintOut=imprimer
PrintPreview = appercu avant impression
VB:
'Private Sub UserForm_Activate()
'With frm_imprimer_janvier
'.StartUpPosition = 3
'.Width = Application.Width
'.Height = Application.Height
'.Left = 0
'.Top = 0
'End With
'End Sub


'***********************************************

Private Sub CommandButton2_Click()
    Dim Ind As Integer
    For Ind = 1 To 7
        If Me.Controls("CheckBox" & Ind).Value = True Then
            Sheets(Sheets("Imprimer").Range("I" & 14 + Ind).Value).PrintOut Copies:=1
            ' si tu veux l'apercu c'est PrintPreview à la place de PrintOut
        End If
    Next Ind
End Sub

Private Sub CommandButton3_Click()
    Dim I&
    For I = 1 To 7: Me.Controls("CheckBox" & I).Value = False: Next
End Sub

Private Sub UserForm_Initialize()    'Valeurs initiales des cases à cocher
    Dim I&, SH As Worksheet
     Set SH = Sheets("Imprimer")
  For I = 1 To 7
        Me.Controls("TextBox" & I) = SH.Range("I" & I + 14)
    Next
     CheckBox1.Value = SH.[BA2] = "Coché"
    CheckBox2.Value = SH.[BB2] = "Coché"
    CheckBox3.Value = SH.[BC2] = "Coché"
    CheckBox4.Value = SH.[BD2] = "Coché"
    CheckBox5.Value = SH.[BE2] = "Coché"
    CheckBox6.Value = SH.[BF2] = "Coché"
    CheckBox7.Value = SH.[Bg2] = "Coché"
End Sub

Sub coche(ByVal check As Object, ByVal rng As Range): rng.Value = Array("non coché", "coché")(check.Value): End Sub
Private Sub CheckBox1_Click(): coche CheckBox1, [BA2]: End Sub
Private Sub CheckBox2_Click(): coche CheckBox2, [BB2]: End Sub
Private Sub CheckBox3_Click(): coche CheckBox3, [BC2]: End Sub
Private Sub CheckBox4_Click(): coche CheckBox4, [BD2]: End Sub
Private Sub CheckBox5_Click(): coche CheckBox5, [BE2]: End Sub
Private Sub CheckBox6_Click(): coche CheckBox6, [BF2]: End Sub
Private Sub CheckBox7_Click(): coche CheckBox7, [Bg2]: End Sub

Private Sub CommandButton1_Click()
    Range("BA1:BG2") = "Non coché"
End Sub
 

Yann71

XLDnaute Occasionnel
bonjour
il y a largement plus simple a faire
faut il avoir un exemple de fichier

en attendant ton fichier j'ai quand même fait un nettoyage de code
et pour info
PrintOut=imprimer
PrintPreview = appercu avant impression
VB:
'Private Sub UserForm_Activate()
'With frm_imprimer_janvier
'.StartUpPosition = 3
'.Width = Application.Width
'.Height = Application.Height
'.Left = 0
'.Top = 0
'End With
'End Sub


'***********************************************

Private Sub CommandButton2_Click()
    Dim Ind As Integer
    For Ind = 1 To 7
        If Me.Controls("CheckBox" & Ind).Value = True Then
            Sheets(Sheets("Imprimer").Range("I" & 14 + Ind).Value).PrintOut Copies:=1
            ' si tu veux l'apercu c'est PrintPreview à la place de PrintOut
        End If
    Next Ind
End Sub

Private Sub CommandButton3_Click()
    Dim I&
    For I = 1 To 7: Me.Controls("CheckBox" & I).Value = False: Next
End Sub

Private Sub UserForm_Initialize()    'Valeurs initiales des cases à cocher
    Dim I&, SH As Worksheet
     Set SH = Sheets("Imprimer")
  For I = 1 To 7
        Me.Controls("TextBox" & I) = SH.Range("I" & I + 14)
    Next
     CheckBox1.Value = SH.[BA2] = "Coché"
    CheckBox2.Value = SH.[BB2] = "Coché"
    CheckBox3.Value = SH.[BC2] = "Coché"
    CheckBox4.Value = SH.[BD2] = "Coché"
    CheckBox5.Value = SH.[BE2] = "Coché"
    CheckBox6.Value = SH.[BF2] = "Coché"
    CheckBox7.Value = SH.[Bg2] = "Coché"
End Sub

Sub coche(ByVal check As Object, ByVal rng As Range): rng.Value = Array("non coché", "coché")(check.Value): End Sub
Private Sub CheckBox1_Click(): coche CheckBox1, [BA2]: End Sub
Private Sub CheckBox2_Click(): coche CheckBox2, [BB2]: End Sub
Private Sub CheckBox3_Click(): coche CheckBox3, [BC2]: End Sub
Private Sub CheckBox4_Click(): coche CheckBox4, [BD2]: End Sub
Private Sub CheckBox5_Click(): coche CheckBox5, [BE2]: End Sub
Private Sub CheckBox6_Click(): coche CheckBox6, [BF2]: End Sub
Private Sub CheckBox7_Click(): coche CheckBox7, [Bg2]: End Sub

Private Sub CommandButton1_Click()
    Range("BA1:BG2") = "Non coché"
End Sub
Bonjour patricktoulon, merci pour ton intervention. Effectivement un fichier se montre être de rigueur. Voici dès lors mon fichier. Le code est associé au bouton avec logo imprimante et ceci sur chaque feuille. J'ai du allégé le fichier car trop volumineux pour l'envoyer en totalité.
 

Pièces jointes

  • Comptabilité_TEST_2.zip
    988 KB · Affichages: 10

Yann71

XLDnaute Occasionnel
re
a ben là oui tu cour a la catastrophe
36 userform qui font la meme chose ca sert rien tu pourrais simplifier
puré le pauvre classeur :oops: ouff!!!
euh non pas 36 userform mais 36 commandes qui appellent le même userform. Question simplification je ne suis pas très doué, j'essaie avec le très peut de connaissance que j'ai d'avancer grâce à des codes trouvé ici. Ma question est-il possible de faire quelque chose:rolleyes:
 

patricktoulon

XLDnaute Barbatruc
re
tout ces userform font la meme chose pour un mois différent ca peut en etre qu'un seul qui fait tout les mois
1659810275410.png
 

Discussions similaires

Réponses
49
Affichages
1 K

Statistiques des forums

Discussions
315 092
Messages
2 116 119
Membres
112 666
dernier inscrit
Coco0505