Combobox : liste conditionelle

Résolu
Signaler
Messages postés
7
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
6 avril 2006
-
Messages postés
7
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
6 avril 2006
-
Please Help
J'aimerais effectuer une liste d'informations dans une combobox conditionelle à une autre comboBox remplie précedemment par l'utilisateur.
Si l'utilisateur choisis "Lamellés collés " dans la 1ère combobox, alors il aura le choix dans la 2ème combobox entre "cat1" et "cat2" . Si il choisis "Bois massif" alors il aura le choix entre "cat1","cat2","cat3","sans défauts".

Voillà ce que j'ai pour le moment :

Private Sub ComboBoxcat_dropbuttonclick()
'condition1If ComboBoxcat.ListCount 0 And ComboBoxLCM.Value "Bois massif" Then
ComboBoxcat.AddItem "catégorie 1"
ComboBoxcat.AddItem "catégorie 2"
ComboBoxcat.AddItem "catégorie 3"
ComboBoxcat.AddItem "sans défauts"
End If
'condition2If ComboBoxcat.ListCount 0 And ComboBoxLCM.Value "Lamellés collés" Then
ComboBoxcat.AddItem "catégorie 1"
ComboBoxcat.AddItem "catégorie 2"
End If


End Sub

Le problème c'est que si l'utilisateur entre pour la première fois la valeur "Bois massif" dans ComboBoxLCM, alors dans ComboBoxcat, il y aura 4 valeurs disponibles.
Donc la condition 2 ne pourra jamais être remplie puisque ComboBoxcat.Listcount est différent de 0.

alors j'ai essayé de parcourir la comBox avec un truc comme
For i = 0 To combobox.ListCount - 1
If combobox.List(i) = "blabla" Then Exit For
Next


mais je ne comprends pas tout étant débutant ca veut dire quoi faire une boucle?


Merci

Donne moi du couscous Chérie.

5 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Est ce Que l'utilisateur n'aura le choix qu'entre "Lamellés collés" et "Bois Massif"
Si oui pourquoi lui laisser rentrer les valeur.
Regarde si ce qui suit peut t'aider
Change tes styles de Combo en 2 - DropDownList et fais

A la procédure d'initisalisation de ton form.

Call Combo1.AddItem("Lamellé collés")
Call Combo1.AddItem("Bois Massif")

Ensuite dans l'événement Click de ton Combo:

Private Sub Combo1_Click()
Select Case Combo1.ListIndex
Case 0: Call AddCombo(False)
Case 1: Call AddCombo(True)
End Select
End Sub


Private Sub AddCombo(BMassif As Boolean)
Call Combo2.Clear
Call Combo2.AddItem("cat1")
Call Combo2.AddItem("cat2")
If BMassif Then
Call Combo2.AddItem("cat3")
Call Combo2.AddItem("sans défauts")
End If
Combo2.ListIndex = 0
End Sub

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
46
Date d'inscription
samedi 25 mars 2006
Statut
Membre
Dernière intervention
7 juin 2007

Bonsoir, je te pose une question qui va te sembler bête mais pourquoi
utiliser une combox comme 1 puisque si le choix à faire n'est pas déja
présent dans la combobox1, la deux ne peut rien renvoier, sachant qu'il
y a plusieurs possibilités (cat1, cat2 ou cat1, cat2, cat3 et sans
défaut (à ce sujet, si il n'y a pas de défaut, il n'y a pas de raison
d'y mettre un "s").

En bref ta question n'est pas claire, peux tu expliquer un peu plus.



Pour la remarque sur l'orthogrphe, je fais parti de la catégorie des
gens qui n'ont pas à craner sur le sujet mais si c'est pour des
clients, il vaut mieux que ce soit net.

MAXIMO71
Messages postés
7
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
6 avril 2006

Merci MAXIMO 71 pour ta réponse, merci aussi de prendre la peine de corriger mes fautes.

Je ne comprends pas ta réponse, mince alors, il y a beaucoup d'incompréhension entre nous!

En fait c'est la 1ère fois que j'utilise VB sous Excel, je ne suis pas très clair mais mon but est celui ci :




J'aimerais effectuer une liste d'informations dans une
combobox conditionelle à une autre comboBox remplie précedemment par
l'utilisateur.
Si l'utilisateur choisis "Lamellés collés " dans la
1ère combobox, alors il aura le choix dans la 2ème combobox entre
"cat1" et "cat2" . Si il choisis "Bois massif" alors il aura le choix
entre "cat1","cat2","cat3","sans défauts"




note :

L'utilisateur remplie les combobox dans l'ordre : tout est dans
l'userform, mes calculs n'ont aucun lien avec un classeur. Je programme
un logiciel de calcul.



Il semblait que la solution était de parcourir la combobox avec un truc comme

For i = 0 To combobox.ListCount - 1

If combobox.List(i) = "blabla" Then Exit For

Next

mais je ne sais m'en servir. Merci de votre aide




Donne moi du couscous Chérie.
Messages postés
32
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
3 août 2006

Salut,
Un exemple de code avec deux combobox. Underlying est au choix. Maturity est fonction de underlying. Faut adapter le code. Pour t'éclairer sur la structure ici, DictUnderlying est un dictionary qui a comme clé les underlying et comme éléménts des dictionnaires de maturité dont les clés sont les maturités.
Pense que si tu veux etre souple, c'est bien de construire un dictionary.
Bon courage,
Michael

Private Sub UnderlyingComboBox_Change()


Dim underlying As String
Dim element As Variant
Dim DictMaturity As Dictionary


On Error GoTo UnderlyingComboBox_Change_Error

'Selection
underlying = UnderlyingComboBox.value

'Reset Underlying Dictionary
If HSA_Data.DictUnderlying Is Nothing Then
If Not HSA_Data.BuildProduct Then
GoTo exitHere
End If
End If

'Init MaturityComboBox
If DictUnderlying.Exists(underlying) Then
Set DictMaturity = DictUnderlying(underlying)
SortDictionary DictMaturity
Call MaturityComboBox.Clear
For Each element In DictMaturity.Keys
MaturityComboBox.addItem CDate((CStr(element)))
Next element
End If

exitHere:
On Error GoTo 0
Set DictMaturity = Nothing
Exit Sub


UnderlyingComboBox_Change_Error:
ShowError "Error " & err.number & " (" & err.Description & ") in procedure UnderlyingComboBox_Change of VBA Document shtAutofit"
Resume exitHere

End Sub
Messages postés
7
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
6 avril 2006

Merci à vous.

Donne moi du couscous Chérie.