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
235
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
23 août 2018
20
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
235
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