Private Sub cmb_imprimer_Click()
Dim os() As String 'déclare le tableau de variable os (Onglet Sélectionné)
Dim i As Byte 'déclare la variable i (Incrément)
Dim n As Byte 'déclare la variable n (Nombre de cases cochées)
For Each ctrl In Me.Controls 'boucle sur tous les contrôles de l'userform
If TypeOf ctrl Is MSForms.CheckBox Then 'condition 1 : si le type de contrôle est une checkbox
If ctrl = True Then 'condition 2 : si le contrôle est "coché"
ReDim Preserve os(i) 'redimensionne le tableau de variables os
os(i) = Right(ctrl.Name, 1) 'définit la variable indéxée os(i) du tableau os (le dernier caractère du nom du contrôle)
i = i + 1 'incrémente i
End If 'fin de la condition 2
End If 'fin de la condition 1
Next ctrl 'prochain contrôle de la boucle
On Error Resume Next 'gestion des erreurs
n = Application.CountA(os) 'définit la variable n (génère une erreur si aucune case n'est cochée)
If Err <> 0 Then 'condition : si une ereur a été générée
Err = 0 'annule l'erreur
MsgBox "Aucun onglet n'a été sélectionné !" 'message
Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Sheets(os).Select 'sélectionne les onglets du tableau de variable os
ActiveWindow.SelectedSheets.PrintOut Copies:=1
For i = LBound(os, 1) To UBound(os, 1) 'boucle sur les onglets sélectionnés
'enlève les pointiller des sauts de page
Sheets(os(i)).DisplayAutomaticPageBreaks = False
Next i 'prochain onglet de la boucle
Sheets("General").Select 'Ça plante et je ne sais pas pourquoi
Unload Me
End Sub