Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tri dans un ComboBox

3 réponses
Avatar
Dan
Bonjour .....

J'ai un Combobox qui contient x lignes avec 5 colonnes .....
L'utilisateur peut modifier ou insérer une nouvelle ligne, mais je voudrais
poiuvoir, à la fin de l'insertion, retrier le contenu du Combobox ....

Existe-t-il une possibilité autre que de copier les données dans un tableau
provisoire, de trier dans ce tableau et ensuite de recharger le Combobox ??

Merci pour votre aide ...

Dan

3 réponses

Avatar
sab
Dan a écrit :
Bonjour .....

J'ai un Combobox qui contient x lignes avec 5 colonnes .....
L'utilisateur peut modifier ou insérer une nouvelle ligne, mais je voudrais
poiuvoir, à la fin de l'insertion, retrier le contenu du Combobox ....

Existe-t-il une possibilité autre que de copier les données dans un tableau
provisoire, de trier dans ce tableau et ensuite de recharger le Combobox ??

Merci pour votre aide ...

Dan



Je m'y connais pas trop mais pour le tri j'ai peut etre la solution...
Je te donne l'exemple pour une liste sur une seule colone:

Ta liste est elle definie par un nom?
Appelons ta liste source de ton combobox Maliste et elle est située sur
la colonne A de la feuille1 et debute en A2

Ce qui te donne quelque chose comme cela lors de l'intialisation de ta
combobox:
Combobox.RowSource = "Feuil1!Maliste"


'Pour ajouter l' item éventuellement entré dans le combobox
If Combobox.Value <> "" Then
'ajoute l'Item à liste sur la page Feuil1
Range("Feuil1!A2").End(xlDown).Offset(1, 0).Value = Combobox.Value
'tri de la liste
Sheets("Feuil1").Activate
Range("Maliste").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,Header:=xlNo,_
OrderCustom:=1, Orientation:=xlTopToBottom
End If
'Active la Feuille (feuilx) sur laquellle tu desire te retrouver à la
sortie du formulaire (Unload formulaire)
Sheets ("Feuilx").Activate


Mais le probleme c'est que cela n'evite pas les doublons...qui vont
s'accumuler dans la liste et donc dans la combobox!!!
J'ai pose la question ici mais n'ai pas eu de reponse encore ,pourtant
c'est un probleme qui doit etre tres connu car recurent avec les
combobox!
Avatar
Dan
Hello sab,

Merci pour ta réponse, mais je n'utilise pas directement les valeurs qui se
trouvent dans l'onglet (car codées) ... Cet onglet est invisible pour
l'utilisateur ...
Il contient des codes comme 0 ou 1 dans les colonnes, et j'affiche dans le
CB le texte Actif ou Inactif par exemple ....

Pour cela, je charge les données de l'ionglet dans MyArray(x,5) ...
Et cette array est ensuite chargée dans le CB avec MonCB() = MyArray ....

Le problème est que quand on insère un nouveau paramètre dans le CB, il
apparait en fin de liste, non trié ....

Pour l'instanat, je recopie les données modifiées du CB dans un onglet
spécial, où je trie et recharge le CB via MonArray ....

Ma question est : existe-t-il une fonction permettant de trier soit dans le
CB directement, soit une array (tri sur 2 colonnes !!)

Merci encore ...

Dan

"sab" a écrit :
Je m'y connais pas trop mais pour le tri j'ai peut etre la solution...
Je te donne l'exemple pour une liste sur une seule colone:

Ta liste est elle definie par un nom?
Appelons ta liste source de ton combobox Maliste et elle est située sur
la colonne A de la feuille1 et debute en A2

Ce qui te donne quelque chose comme cela lors de l'intialisation de ta
combobox:
Combobox.RowSource = "Feuil1!Maliste"


'Pour ajouter l' item éventuellement entré dans le combobox
If Combobox.Value <> "" Then
'ajoute l'Item à liste sur la page Feuil1
Range("Feuil1!A2").End(xlDown).Offset(1, 0).Value = Combobox.Value
'tri de la liste
Sheets("Feuil1").Activate
Range("Maliste").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,Header:=xlNo,_
OrderCustom:=1, Orientation:=xlTopToBottom
End If
'Active la Feuille (feuilx) sur laquellle tu desire te retrouver à la
sortie du formulaire (Unload formulaire)
Sheets ("Feuilx").Activate


Mais le probleme c'est que cela n'evite pas les doublons...qui vont
s'accumuler dans la liste et donc dans la combobox!!!
J'ai pose la question ici mais n'ai pas eu de reponse encore ,pourtant
c'est un probleme qui doit etre tres connu car recurent avec les
combobox!





Avatar
sab
hello

Alors la je ne peux rien pour toi!!!

Deja qu'avec l'exemple ci dessous je ne fais que rentrer les données du
combo dans sa Rowsource et les trier par ordre Alpha mais comme je te
l'ai deja dit cela genere des doublons dans la liste
Il faudrait quelque chose comme
si deja dans la liste du combo ne pas rajouter...mais je n'y arrive
pas et personne n'a repondu c'est pourtant un probleme recurent des
combobox
bon courage!!




Dan a écrit :
Hello sab,

Merci pour ta réponse, mais je n'utilise pas directement les valeurs qui se
trouvent dans l'onglet (car codées) ... Cet onglet est invisible pour
l'utilisateur ...
Il contient des codes comme 0 ou 1 dans les colonnes, et j'affiche dans le
CB le texte Actif ou Inactif par exemple ....

Pour cela, je charge les données de l'ionglet dans MyArray(x,5) ...
Et cette array est ensuite chargée dans le CB avec MonCB() = MyArray ....

Le problème est que quand on insère un nouveau paramètre dans le CB, il
apparait en fin de liste, non trié ....

Pour l'instanat, je recopie les données modifiées du CB dans un onglet
spécial, où je trie et recharge le CB via MonArray ....

Ma question est : existe-t-il une fonction permettant de trier soit dans le
CB directement, soit une array (tri sur 2 colonnes !!)

Merci encore ...

Dan

"sab" a écrit :
Je m'y connais pas trop mais pour le tri j'ai peut etre la solution...
Je te donne l'exemple pour une liste sur une seule colone:

Ta liste est elle definie par un nom?
Appelons ta liste source de ton combobox Maliste et elle est située sur
la colonne A de la feuille1 et debute en A2

Ce qui te donne quelque chose comme cela lors de l'intialisation de ta
combobox:
Combobox.RowSource = "Feuil1!Maliste"


'Pour ajouter l' item éventuellement entré dans le combobox
If Combobox.Value <> "" Then
'ajoute l'Item à liste sur la page Feuil1
Range("Feuil1!A2").End(xlDown).Offset(1, 0).Value = Combobox.Value
'tri de la liste
Sheets("Feuil1").Activate
Range("Maliste").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,Header:=xlNo,_
OrderCustom:=1, Orientation:=xlTopToBottom
End If
'Active la Feuille (feuilx) sur laquellle tu desire te retrouver à la
sortie du formulaire (Unload formulaire)
Sheets ("Feuilx").Activate