Remplissages comboxes

Résolu
cs_Beginner37 Messages postés 35 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 28 février 2011 - 3 oct. 2007 à 17:38
cs_Beginner37 Messages postés 35 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 28 février 2011 - 4 oct. 2007 à 10:32
Bonjour,
Il est possible que je sois sur VB.net car je ne peux pas sélectionner seulement VBA (j'ai sélectionné "VB.NET etVB 2005/Divers/Débutants".

Suite à la réponse de MPi sur le remplissage de plusieurs combobox existants à l'aide d'une Fonction, j'ai un autre soucis où les Combobox ne sont pas à l'origine créés dans l'userform.

Le séquentiel est le suivant :
1) création de combobox les uns à la suite des autres dans un Userform.
programme principal :
nbcombo= 1
Call CreationCombo
puis remplissage des combobox
Call RempliCombo Userform1.combobox1, valeurs     'correct que si la combobox existe
 (voir http://www.vbfrance.com/forum.v2.aspx?ID=1017423 )

2) sub CreationCombo ()   'insertion de la combobox dans l'userform
set Obj = Userform1.Controls.Add("forms.Combobox.1")
With Obj
   .name="Combox" & nbCombo  'chaque Combobox est nommé
   .Widht=120
   .Top =10   'ajouter à chaque passage un décalage
   .Height = 15
end with
nbCombo=nbCombo+1    'je peux créer autant de combobox vides que je souhaite en rebouclant
end sub

3) sub RempliCombo (Cbo as combobox, valeurs)
 Dim I As Integer
   
    For I = 0 To UBound(Valeurs)
        Cbo.AddItem Valeurs(I)
    Next    If Cbo.ListCount >0 Then Cbo.ListIndex 0
End Sub

Au démarrage du programme, comme à l'origine le combobox n'est pas créé, la ligne Call RempliCombo Userform1.combox1, valeurs renvoie une erreur car Userform.combox1 n'existe pas. De plus, j'avais essayé de faire différentes variantes du style Userform1.Combobox & nbCombo (un mélange d'Objet et de string) sans succès évidemment.
Je suis bloqué dans cette instruction :  "RempliCombo Userform1. ...."
J'ai pensé à changer la façon de faire en créant dès le départ un nombre de combobox dans l'userform  en forçant  .Visible=False et de les replacer à ma convenance dans l'userform avec .Visible=true et les remplir. C'est moins élégant.

Je fais appel à vos idées à la question suivante :
Est-il possible de trouver un artifice pour remplacer l'Objet Userform.comboboxn par un autre code en VBA 5 (prenant en compte la valeurn allant de 1 à 10 par exemple).
For n=1 to 10
Call RempliCombo Userform1.Comboboxn , Valeurs
Next

Merci


 

4 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 oct. 2007 à 08:20
Salut,
>[auteur/DBLK/224194.aspx DblK] Et non pas de propriété Index en VBA. Et il est vrai que c'est bien dommage.

>[auteur/BEGINNER37/965888.aspx Beginner37]: Tu pourrais essayer de faire un  truc du genre. (en adaptant)
Ce que tu as besoin est UserForm1.Controls("NomDuControl")

Private NBCombo As Integer
Private Valeurs
Private I As Integer
Private Sub CommandButton1_Click()
   NBCombo = 1
   'pour le teste
   Valeurs = Array("Coucou", "ceci", "est", "un", "test")
   Call CreationCombo
   For I = 1 To NBCombo - 1
       Call RempliCombo(UserForm1.Controls("Combobox" & I), Valeurs)      'correct que si la combobox existe
   Next
End Sub<hr />
Sub CreationCombo()    'insertion de la combobox dans l'userform
   Set obj = UserForm1.Controls.Add("forms.Combobox.1")
   With obj
      .Name = "Combobox" & NBCombo 'chaque Combobox est nommé
      .Width = 120
      .Top = 10 'ajouter à chaque passage un décalage
      .Height = 15
   End With
   NBCombo = NBCombo + 1 'je peux créer autant de combobox vides que je souhaite en rebouclant
End Sub<hr />
Sub RempliCombo(Cbo As ComboBox, Valeurs)
Dim I As Integer
 
   For I = 0 To UBound(Valeurs)
       Cbo.AddItem Valeurs(I)
   Next   If Cbo.ListCount >0 Then Cbo.ListIndex 0
End Sub , ----
[code.aspx?ID=41455 By Renfield]

NOTE: La section correcte pour poster des question VBA est : [infomsg.aspx Thèmes]

/ [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA]
@+: Ju£i?n
Pensez: Réponse acceptée
3
DblK Messages postés 51 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 2 octobre 2008
3 oct. 2007 à 19:42
Bonjour,

Pourquoi ne pas faire de tableau de combo, en utilisant la propriété index (à moins qu'elle n'existe pas en VBA) ?
Et tu ne peux pas les créer avant exécution ? Ce qui sera plus facile pour toi.

DblK
0
cs_Beginner37 Messages postés 35 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 28 février 2011
4 oct. 2007 à 10:32
Merci JRivet


avec une légère adaptation,
Tout fonctionne à merveille !


Cela montre que je ne maîtrise pas encore les "CONTROLS".

Cordialement


 
0
cs_Beginner37 Messages postés 35 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 28 février 2011
4 oct. 2007 à 10:32
Merci JRivet


avec une légère adaptation,
Tout fonctionne à merveille !


Cela montre que je ne maîtrise pas encore les "CONTROLS".

Cordialement


 
0
Rejoignez-nous