tchobisounours
Messages postés7Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention 6 avril 2006
-
4 avril 2006 à 17:56
tchobisounours
Messages postés7Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention 6 avril 2006
-
6 avril 2006 à 13:15
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?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 5 avril 2006 à 09:10
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
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
MAXIMO71
Messages postés46Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention 7 juin 2007 4 avril 2006 à 20:12
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.
tchobisounours
Messages postés7Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention 6 avril 2006 4 avril 2006 à 21:58
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
micmerle
Messages postés32Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention 3 août 2006 5 avril 2006 à 09:19
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