Probleme VBA - Deux listes Combobox - VB/VBA/VBS - Programmation
Marsh Posté le 21-02-2008 à 11:16:41
Bonjour,
Voilà une proposition ... ne sachant pas d'ou viennent les données des 2 listes :
2 combo : combo1 et Combo2.
Tu choisis dans Combo1 et Combo2 se met à jour.
Private Sub Combo1_Change()
Call AfficheElement(Combo1.Text)
End Sub
Private Sub UserForm_Initialize()
Combo1.AddItem "Cac40"
Combo1.AddItem "SP100"
Combo1.Text = Combo1.List(0)
End Sub
Private Sub AfficheElement(ElListe1 As String)
Combo2.Clear
Select Case ElListe1
Case "Cac40":
Combo2.AddItem "Cac40 --- 1"
Combo2.AddItem "Cac40 --- 2"
Combo2.AddItem "Cac40 --- 3"
Combo2.AddItem "Cac40 --- 4"
Case "SP100":
Combo2.AddItem "SP100 --- 1"
Combo2.AddItem "SP100 --- 2"
Combo2.AddItem "SP100 --- 3"
Combo2.AddItem "SP100 --- 4"
End Select
Combo2.Text = Combo2.List(0)
End Sub
Marsh Posté le 21-02-2008 à 14:58:18
Merci pour ta réponse mais en fait les eléments sont a prendre dans une seconde colonne (et y en a 700 )
En gros sous excel ca donne ca :
colonneA Colonne B
CAC40 Axa
CAC40 BNP
CAC40 Sociétégénérale
SP100 Microsoft
SP100 Intel
Donc le but est de faire apparaitre dans une premiere combobox les deux indices (Pas trop dur avec Rowsource), et faire apparaitre dans une deuxième les éléments relatifs au choix de l'indice de la première Combobox (Donc pour le CAC 40 : Axa, BNP,...)
merci merci
Marsh Posté le 21-02-2008 à 18:02:52
Alors voilà une proposition qui fonctionne...peut-etre pas la plus nickel !
les données sont colA et colB de ligne 1 a 5
Private Sub Combo1_Change()
Combo2.Clear
Call AfficheElement(Combo1.Text)
End Sub
Private Sub UserForm_Initialize()
Dim MonTableau As Range
Dim TabRes As Collection
Set MonTableau = Range("A1:A5" )
Set TabRes = CollTrieeSansDoublons(MonTableau)
For Each el In TabRes
Combo1.AddItem el
Next
End Sub
Function CollTrieeSansDoublons(Plage) As Collection
Dim AllCells As Range, cell As Range
Dim NoDupes As New Collection
Dim i As Integer, j As Integer
Dim Swap1, Swap2, Item
Set AllCells = Plage
On Error Resume Next
For Each cell In AllCells
NoDupes.Add cell.Value, CStr(cell.Value)
Next cell
On Error GoTo 0
' Sort the collection
For i = 1 To NoDupes.Count - 1
For j = i + 1 To NoDupes.Count
If NoDupes(i) > NoDupes(j) Then
Swap1 = NoDupes(i)
Swap2 = NoDupes(j)
NoDupes.Add Swap1, before:=j
NoDupes.Add Swap2, before:=i
NoDupes.Remove i + 1
NoDupes.Remove j + 1
End If
Next j
Next i
Set CollTrieeSansDoublons = NoDupes
End Function
Sub AfficheElement(MaSelection As String)
Dim MonTab As Range
Set MonTab = Range("A1:B5" )
i = 1
For Each cel In MonTab
If cel = MaSelection Then
Combo2.AddItem MonTab(i + 1)
End If
i = i + 1
Next
End Sub
Marsh Posté le 20-02-2008 à 20:46:26
Bonjour a tous !
Je viens vers vous pour un petit coup de main. En effet, j'aimerais savoir comment concevoir un formulaire composé de deux zones de liste modifiables, la première permettant de filtrer les données affichées dans la seconde.
Exemple :
- J'ai deux catégories : Cac40 et SP100 (Vive la finance ). Ces dernières à mettre dans une zone de liste modifiable (Combobox)
- Pour chacune de ces catégories , j'ai plusieurs éléments (par exemple les actions de chaucun de ces indices boursiers), eux aussi à insérer dans une zone de liste modifiable.
Voili voilou, pouvez vous donc m'aider ??? Merci d'avance
Message édité par fixxup le 20-02-2008 à 20:46:51