Voici un code beaucoup plus propre.... (me semble-t-il). Dans cet exemple, le contenu est dans le formload, mais tu peux également être encore plus générique en le plaçant soit dans un fichier texte (.ini, cfg, ...) ou dans l'en-tête du projet.
N'oublie pas de mettre ta combo en Dropdown List sans quoi elle serait éditable.
Private Sub Form_Load()
Dim i As Integer
Dim j As Integer
Dim Donnees As Variant
Donnees = Split("green|Clear|blue|brown", "|" )
For j = LBound(Donnees) To UBound(Donnees)
cbo_cg(0).AddItem Donnees(j), j
Next j
For i = 1 To 5
Load cbo_cg(i)
With cbo_cg(i)
.Visible = True
.Top = .Height + cbo_cg(i - 1).Top + 5 * Screen.TwipsPerPixelY
For j = LBound(Donnees) To UBound(Donnees)
.AddItem Donnees(j), j
Next j
End With
Next i
End Sub
Dans l'exemple présenté, je crée seulement une combo à laquelle je place un index '0'.
Le texte en vert est uniquement utilisé pour repositionner les combo's en les décallant de 5 pixels verticalement l'une de la précédente.
Le texte en rouge est le code permettant d'ajouter le contenu et son index dans la combo.
Si tu désires que chaque combo affiche le premier élément, dans la boucle 'i' tu dois y ajouter ".listindex = 0" sans oublier le le faire également dans la première combo ( cbo_cg(0)).
Autre solution, est de refaire une boucle de type globale après les créations :
For i = cbo_cg.LBound To cbo_cg.UBound
cbo_cg(i).ListIndex = 0
Next i
Message édité par pdw le 15-08-2011 à 11:38:59