Bonjour à toutes et tous,

Pour remplir un questionnaire, j'ai un UserForm multipage qui comporte 108 Optionbutton associés deux par deux qui déclenchent chacun l'affichage de deux CheckBox. Le choix d'un bouton va transférer le contenu d'une cellule dans un ListBox1 et la coche d'un ou deux CheckBox va transférer le contenu d'une ou deux cellules dans un second ListBox. On arrive à la fin à un listing avec questions à gauche (ListBox1) et ainsi à 216 possibilités dans le ListBox2 des réponses.

J'utilise actuellement le code suivant pour le premier couple de boutons :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Private Sub OptionButton1_Click()
    ListBox1.AddItem (Sheets("Feuil1").Range("A1"))
    CheckBox1.Caption = (Sheets("Feuil1").Range("N1"))
    CheckBox2.Caption = (Sheets("Feuil1").Range("N2"))
End Sub
Private Sub OptionButton2_Click()
    ListBox1.AddItem (Sheets("Feuil1").Range("A3"))
    CheckBox1.Caption = (Sheets("Feuil1").Range("N3"))
    CheckBox2.Caption = (Sheets("feuil1").Range("N4"))
End Sub
et ainsi de suite pour les suivants. Et pour l'alimentation du ListBox2 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Private Sub CheckBox1_Click()
    ListBox2.AddItem CheckBox1.Caption
End Sub
Private Sub CheckBox2_Click()
    ListBox2.AddItem CheckBox2.Caption
End Sub
et ainsi de suite pour les suivants, ce qui représente une liste interminable laquelle est parfaitement fonctionnelle, mais ça ne me semble pas très "élégant" et j'imagine que des experts ont sans doute trouvé une autre voie pour le même résultat.

J'avais imaginé quelque chose du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
For i = 1 To 108
If Me.Controls("OptionButton" & i) = True Then
CheckBox1.Caption = (Sheets("Feuil1").Range("N1"))
CheckBox2.Caption = (Sheets("Feuil").Range("N2"))
Mais je ne vois pas comment réaliser une commande globale qui ne répéterait pas 100 fois le même code ni comment ordonner l'ensemble.

merci par avance pour votre expertise

Bono1664