Remplissages comboxes

[Résolu]
Signaler
Messages postés
35
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
28 février 2011
-
Messages postés
35
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
28 février 2011
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
51
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
2 octobre 2008

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
Messages postés
35
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
28 février 2011

Merci JRivet


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


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

Cordialement


 
Messages postés
35
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
28 février 2011

Merci JRivet


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


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

Cordialement