BONSOIR !!!!
J'ai un userform avec plusieurs combobox liées entres elles
Je cherche un code qui me permettrai,pour n'importe quelle combobox de classer les valeurs par trie croissant...
![]()
BONSOIR !!!!
J'ai un userform avec plusieurs combobox liées entres elles
Je cherche un code qui me permettrai,pour n'importe quelle combobox de classer les valeurs par trie croissant...
![]()
Salut,
colle cette procédure parmis les autres de ton userform :
Ensuite, quand tu as besoin de trier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub Tri(ByRef Liste() As String) Dim i As Long, j As Long Dim Temp As String For i = LBound(Liste) To UBound(Liste) - 1 For j = i + 1 To UBound(Liste) If Liste(i) > Liste(j) Then Temp = Liste(j) Liste(j) = Liste(i) Liste(i) = Temp End If Next j Next i End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Dim MyData() As String Dim i As Long ReDim MyData(NomComBo.ListCount - 1) ' NomComBo à remplacer For i = 0 To NomComBo.ListCount ' NomComBo à remplacer MyData(i) = NomCombo.List(i) ' NomComBo à remplacer Next i Call Tri(MyData) NomComBo.Clear ' NomComBo à remplacer For i = LBound(MyList) To UBound(MyList) NomComBo.AddItem MyList(i) ' NomComBo à remplacer Next i Erase MyData
@++
en aplliquant ton code j'ai une erreur 424 objet requis...![]()
sur qu'elle ligne et comment l'applique tu ce code ..?Envoyé par CIBOOX
sur la ligneEnvoyé par bbil
j'ai place ce code dans Private Sub cbox2_Click() ( cbox2=combobox2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReDim MyData(NomCombo.ListCount - 1) ' NomComBo à remplacer
et tu as lu le commentaire de cette ligne ..?
' NomComBo à remplacer
j'ai suivi tes conseils et reparti de la ligne 1 et de la colonne 1
j'ai appliquer le code de SilkyRoad ( merci SilkyRoadça marche !!!! ) et maintenant le tri pour chaque combobox marche
![]()
![]()
le hic c'est que j'ai plus les liaisons entre les cbox
exemple le stagiaire est maintenant du bureau de la direction et a un ligne privee c space nan![]()
![]()
Effectivement, ça peut pas marcher : Si tu effectues un "tri croissant d'un seul combo, l'index de ce combo ne correspond plus à l'index des autres combo. C'est évident !le hic c'est que j'ai plus les liaisons entre les cbox
Avec cette méthode, il faudrait que tu tries tous les autres combo en fonction du combo sélectionné. Une usine à gaz.
"Je crois me souvenir" que je t'ai fourni la seule méthode applicable si tu veux une corrélation entre tes index de combo, à savoir le tri de la base selon la colonne correspondant au combo sélectionné.
Le problème : Pour un tri classique de la base telle qu'elle est, aucune cellule de ta plage de données correspondant au combo sélectionné ne doit être vide. Ainsi, tu ne pourras trier aucune des colonnes au delà de la colonne D.
Aucun problème pour effectuer un tri de la base si ta sélection s'effectue dans un combo correspondant aux colonnes 1 à 4.
Aucun pb non plus pour un simple affichage des données dans les combo 5 à 23 si la sélection s'effectue dans les combos 1 à 4.
En cause, la méthode retenue de remplissage des combos
Une solution consisterait à faire deux colonnes, une visible, contenant la donnée, la seconde masquée, indiquant le N° de ligne.
Pour les afficher, le N° de ligne seul assurerait la liaison entre les combos, non l'index...
Je passe la main.
Bon courage !
Mais je suivrai tes progrès![]()
Mercipour tous tes indications et tes conseils
je pensai arriver au bout mais je m'en eloigne de plus en plus ......
@la prochaine![]()
![]()
je cherche un code qui tri les item des combobox sans toucher a leurs index
T'étais sérieux ?C'est comme si tu demandes à Excel de classer les données par ordre alpha sans changer les N° de lignesEnvoyé par quand tu
![]()
Ce qu'on peut faire, c'est trier tes données par ordre alpha dans une feuille Excel, ce qui aura pour effet de classer tes données dans le combo si celui-ci est renseigné à l'aide de RowSource.
La condition sine qua non, pour effectuer un tri dans ces conditions, étant que toutes les cellules de la colonne sur laquelle s'effectue le tri, soient renseignées.
Ensuite, pour lier les combos selon l'index d'une sélection de l'un d'eux, les données concernant 1 même item doivent se trouver sur la même ligne.
Ça paraît évident mais j'ai eu l'impression, dans ton précédent fichier, que ce n'était pas le cas.
Je regarde celui que tu viens de lier![]()
Partager