Vous avez beaucoup de combobox, et souhaitez les contrôler par un index numérique pour éviter de répéter le code une multitude de fois, n'est-ce pas?
Quel Excel avez-vous? si ce n'est pas Excel d'Office de Vista alors Le VBA est une version dérivée de Visual Basic 6.0.
Dans ce dernier les contrôles peuvent être regroupés en un "groupe de contrôle" permettant d'identifier alors ces derniers facilement par un index numérique: en clair, vous créez deux combos, avec le même nom, et VB vous demande si vous voulez créez avec ceux-ci un groupe, portant le nom commun du combo, mais où les combos sont identifiés séparement par le nom du groupe dont il font parti plus un nombre d'index. (dans la mesure qu'il est impossible d'avoir des contrôles, quels qui soient, ayant le même nom!)
Après il ne vous reste alors plus qu'à faire varier l'index dans le code pour accéder en une boucle for simple aux contrôles groupés:
'J'ai créé deux combos, j'accède dans ce code à leur propriété text par exemple
dim i as long
for i=1 to 2
MonCombo(i).text="Combo " & i
next i
Le hic, c'est que dans VBA, cette fonction pratique n'a pas été transposée(

) : il n'est pas possible, à ma connaissance, de faire des groupes de contrôles dans Excel VBA 6.0 !!!
Grouper les contrôles est une chose parfois qui devient brouillon : on ne sait plus à quel groupe le contrôle que l'on a dessiné appartient, surtout si on a plusieurs groupes.
D'autres solutions existent. En voilà deux (qu'on peut d'ailleurs être combiner pour avoir un code plus confortable!).
Vous pouvez créer une sub, ou une fonction, dans laquelle vous faîtes exécuter votre opération, en généralisant, le combo et les variables nécessaires. Alors, il ne vous reste plus qu'a appeler cette fonction/sub autant de fois qu'il y a de combo et en adaptant les variables à chaque fois.
Sub MonOperation (Variable1 as string, Variable2 as long)
'.... lignes d'opérations
end sub
sub load () 'Par exemple
Moncombo1.text=MonOperation ("Rouge", 10)
Moncombo2.text=MonOperation ("Vert", 30)
'... on continue
end sub
Une autre possibilité, c'est de demander de lister tous les contrôles dessinés sur la feuille UserForm et de distinguer ceux que vous avez astucieusement nommés (cela revient implicitement à créer un groupe de contrôle en fait):
'J'ai créé plusieurs combos sur une feuille type Windows nommée UserForm1, dont les noms sont composés ainsi Moncombo01, Moncombo02...
Dim obj as object, i as long
For each Obj in UserForm1.controls
if Obj.name=lcase(left(obj.name, len(obj.name)-2))="moncombo" then obj.text="MonCombo"
next
C'est une méthode parmi d'autres, plus ou moins discutable d'ailleurs, la propriété left permettant d'extraire de la chaîne de caractères du nom de contrôle, la chaîne "moncombo" qu'on utilise pour identifier les combos souhaités ; cela suppose qu'il n'y a pas de combos que l'on ne veut pas considérer ayant dans leur nom la chaîne "moncombo". La fonction lcase() est une précaution, pour que dans l'égalité on ne considère pas la casse(minuscules/majuscules) des chaînes de caractères mises en jeu ; cette dernière convertit effectivement toutes chaînes en minuscules (Ucase convertit tout en majuscules)
J'espère vous faire avancer!