jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 3 févr. 2007 à 14:54
Explication, quand même (si vraiment nécessaire)
- Dans cellule de la colonne à trier de combo1, j'ai "toto"
- dans cellule correspondante de combo2, j'ai "titi"
- je "construis" pâr concaténation la chaine "toto#titi" dont j'alimente, pare exemple, une listbox (entre autres possibilités) avec proriété sorted = True
- je me retrouve avec une liste triée d'éléments de type "AAAAA#BBBBB" qu'il ne me reste plus qu'à "éclater" avec le séparateur # pour envoyer "AAAAA" vers une textbox et "BBBBB" vers l'autre, dans le même ordre que celui obtenu par le tri.
Voilà le principe (plus qu'élémentaire) pour une cellule par colonne... Et ce principe est vraiment simple.
A comprendre et adapter...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 3 févr. 2007 à 16:08
Ne pas oublier que sous Excel, on peut avoir des combobox à plusieurs colonnes. Peut-être pourrais-tu charger tes deux combobox en un seul. À ce moment, tu pourras trier comme tu veux et chaque élément sera toujours correspondant à son "voisin"...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 3 févr. 2007 à 18:41
Bob.... tu ne sembles pas t'en sortir..
Alors voilà :
Sur ta Form, une listbox nommée List1, avec sa propriété visible <gras>False et sa proriété Sorted</gras> True
et un bouton de commande nommé Command1
En admettant que tes 2 comboboxes soient nommées Combo1 et Combo2
Private Sub Command1_Click()
joignons Combo1, Combo2
End Sub
Private Sub joignons(cb1 As ComboBox, cb2 As ComboBox)
For i = 0 To Combo1.ListCount - 1
List1.AddItem Combo1.List(i) & "#" & Combo2.List(i)
Next
For i = 0 To List1.ListCount - 1
Combo1.List(i) = Mid(List1.List(i), 1, InStr(List1.List(i), "#") - 1)
Combo2.List(i) = Mid(List1.List(i), InStr(List1.List(i), "#") + 1)
Next
End Sub
J'ai choisi d'envoyer vers une listbox car plus facile pour toi, mais tu pourrais bien évidemment envoter dans un tableau, trier ce tableau comme expliqué plus haut, puis réinjecter de la même manière.
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 1 févr. 2007 à 22:45
Salut Ciboox,
Mortalino >> Bonjour >> C'est la folie la différence de l'évolution du langage, en VB, tu fait propriété Sorted sur True, et là tu as tout une tartine de code!!!
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 févr. 2007 à 23:02
Tu as bien raison Exploreur, mais ce n'est pas qu'une simple évolution.
En VBA, on peut insérer des colonnes, ce qu'on ne peut pas en VB...
Et pourtant les 2 langages sont si ressemblants...
Ils auraient pu prendre le meilleur des 2 types de contrôles et les rendre "travaillables" dans les 2 environnements, mais il semble que ce soit trop compliqué pour une équipe de quelques milliers de programmeurs...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 3 févr. 2007 à 13:24
Si le tri est utile pour visualiser mais que tu ne veux pas modifier les Index, je pense que tu devras passer par des tableaux.
Une fois les comboboxes chargées, tu envoies les valeurs dans un tableau, puis tu tries les comboboxes. Si tu veux faire références à certains items, tu recherches dans les tableaux pour retrouver les correspondances.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 4 févr. 2007 à 03:49
JMF, la propriété Sorted en VBA n'existe pas pour les Combobox ou les Listbox.
Par contre, il pourrait utiliser ta méthode après avoir trié sa listbox "manuellement" ...
Comme je disais dans un précédent message, je ne comprends pas pourquoi cette propriété Sorted n'existe pas en VBA, compte tenu que les 2 contrôles proviennent de la même boîte (MicroDoux). Dans un même ordre d'idée VBA permet de créer des colonnes dans ces 2 contrôles, mais pas VB5 ou 6...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 4 févr. 2007 à 07:39
Bon, si la propriété sorted n'existe pas en VBA pour une listbox non plus, il lui suffit d'utiliser le tri d'un tableau, comme dit plus haut ("J'ai choisi d'envoyer vers une listbox car plus facile pour toi, mais tu pourrais bien évidemment envoter dans un tableau, trier ce tableau comme expliqué plus haut, puis réinjecter de la même manière.")...
Mais, puisqu'il est sous VBA et si ce tri l'ennuie, il peut également utiliser tout bêtement une feuille (des cellules) dédiée à cet effet et, dans ce cas là, il n'aurait même plus besoin d'utiliser le truc du séparateur # ! Envoi simple des éléments des 2 combos dans 2 colonnes côtes à côte ==>> tri sur une colonne ===>> récupération du résultat par injection de chacune des 2 colonnes dans la combo qui lui correspond .