Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2038 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Probleme VBA - Deux listes Combobox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme VBA - Deux listes Combobox

n°1689695
fixxup
Posté le 20-02-2008 à 20:46:26  profilanswer
 

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. :pt1cable:  
 
 
Exemple :
 
   -  J'ai deux catégories : Cac40 et SP100      (Vive la finance  :whistle: ). 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
mood
Publicité
Posté le 20-02-2008 à 20:46:26  profilanswer
 

n°1689859
fixxup
Posté le 21-02-2008 à 08:28:44  profilanswer
 

un p'tit up please

n°1689981
Paul Hood
Posté le 21-02-2008 à 11:16:41  profilanswer
 

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


Message édité par Paul Hood le 21-02-2008 à 11:17:23
n°1690175
fixxup
Posté le 21-02-2008 à 14:58:18  profilanswer
 

Merci pour ta réponse mais en fait les eléments sont a prendre dans une seconde colonne (et y en a 700 :d)
 
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
 
 

n°1690307
Paul Hood
Posté le 21-02-2008 à 18:02:52  profilanswer
 

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
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Probleme VBA - Deux listes Combobox

 

Sujets relatifs
D'une requête SQL au VBA[MySQL] Problème avec Jointure ( et plusieurs COUNT sur même table)
Envois de mails avec fichier(s) attache(s)probleme avec sockets : fonctionnement aléatoire
[VB/VBA/VBS] Excel vba et Windows 64 bit: problème de shell ?C# : problème avec retour de valeur (return int)
[résolu] Petit problème de ThreadTimer VBA < 1s
[Résolu]Sélectionner mes zones de texte avec VBA pour excel 
Plus de sujets relatifs à : Probleme VBA - Deux listes Combobox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR