Boucle ComboBox pour la création d'une liste

LePapillonNimois Messages postés 1 Date d'inscription mercredi 25 mars 2015 Statut Membre Dernière intervention 25 mars 2015 - Modifié par ucfoutu le 25/03/2015 à 12:25
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 25 mars 2015 à 17:58
Bonjour,

Je n'arrive pas à comprendre comment créer une boucle de ComboBox.

J'ai créé un UserForm qui permet de sélectionner des noms les uns après les autres pour les insérer en liste dans un feuille Excel. J'arrive à cela :

Private Sub ComboBox3To11_Change()
Dim i As Byte
Range("C6").Activate
For i = 3 To 11
Label1.Caption = Controls("ComboBox" & i).Value
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = UserForm1.Controls("ComboBox" & i).Value
Next
End Sub


Traduction de la logique que j'aimerais écrire : Pour les ComboBox 3 à 11, je veux que le UserForm enregistre le nom que va choisir l'utilisateur, qu'il passe à la cellule du dessous et saisisse le choix de l'utilisateur.

Exemple : Si l'utilisateur choisis "Paris" dans le ComboBox 3, "Londres" dans le ComboBox 4, ... j'aurais écris Paris en cellule C7, Londres en cellule C8, etc.

Mais mon code est visiblement faux car cela ne fonctionne pas.

Auriez-vous une explication/solution ?

Merciii

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 mars 2015 à 12:34
Bonjour,
- J'ai commencé par mettre ton code entre balises code (il est très important, pour la lisibilité, de respecter cette règle, que je te prie d'observer à l'avenir).
- évite de travailler avec des Activate, Select, etc ... Travaille directement avec les objets Excel.
- j'appelle ton attention (à toi également) sur le fait que la propriété Value d'une Combobox ne correspond pas forcément à l'article qui y est cliqué ! cette propriété a pour valeur ce qui apparait dans la zone de saisie de la combo (ce qui est donc risqué).
L'article sélectionné dans une combobox comboboxx est donc (et là à coup sûr) :
comboboxx.list(comboboxx.listindex)
Reviens après avoir tenu compte de ces indications et modifié ton code en conséquence.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 mars 2015 à 14:40
Bonjour à vous,

Le nom de la macro m'interpelle...
Private Sub ComboBox3To11_Change()

Comme ce n'est pas vraiment un événement, de ce que je pense, comment est-elle appelée ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 mars 2015 à 17:58
Bonjour, Cs_MPI,
Si si, c'est bien une procédure évènementielle.
Elle est toutefois ici utilisée abusivement et dangereusement. Elle intervient en effet non seulement lorsque l'utilisateur à sélectionné un article, mais également lorsqu'il frappe (saisit) dans la zone d'édition de la combo.
Elle est ici de surcroît utilisée à tort.
0
Rejoignez-nous