Private Sub CommandButton1_Click()
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
Dim T As String 'déclare la variable T (Texte)
Dim NB As Byte 'déclare la variable NB (NomBre)
Dim FIN As String 'déclare la variable FIN
Dim NC As Byte 'déclare la variable NC (Nombre de Caractères)
For Each CTRL In Me.Controls 'boucle sur tous les contrôle de l'UserForm
If TypeOf CTRL Is MSForms.CheckBox Then 'condition : si le contrôle est une CheckBox
'si le contrôle est coché, définit le texte T
'(si T est vide, la [Caption] du contrôle, sinon, T + une virgule + un espace + la [Caption] du contrôle)
If CTRL.Value = True Then T = IIf(T = "", CTRL.Caption, T & ", " & CTRL.Caption)
End If 'fin de la condition
Next CTRL 'prochain contrôle de la boucle
If T = "" Then MsgBox "Vous n'avez rien sélectionné !": Exit Sub 'si T est vide message, sort de la procédure
NB = UBound(Split(T, ", ")) 'récupère le nombre blocs-texte séparés par une virgule dans T
If NB = 0 Then Range("A1").Value = T: Exit Sub 'si NB vaut 0, place T dans la cellule A1 et sort de la procédure
FIN = Split(T, ", ")(NB) 'récupère le dernier bloc-texte de T
NC = Len(FIN) + 2 'récupère le nombre de caractères du dernier bloc-texte de T
T = Left(T, Len(T) - NC) & " et " & FIN 'redéfinit T en remplaçant la dernière virgule par " et "
Range("A1").Value = T 'place T dans la cellule A1
Unload Me 'vide et ferme l'UserForm
End Sub