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 :
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
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, ce qui représente une liste interminable
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 Sublaquelle 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 :
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.
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"))
merci par avance pour votre expertise
Bono1664
Partager