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

Trier les valeurs d'une combobox

14 réponses
Avatar
Emile
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas trier.
Cela pouvant paraître un peu compliqué (car je m'explique peut-être mal)
j'ai préféré joindre un lien sur un fichier exemple.
http://www.cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,

10 réponses

1 2
Avatar
Daniel.C
Bonsoir.
Ajoute la macro suivante dans le code de la feuille :

Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Dim c As Range
Application.ScreenUpdating = False
ComboBox1.Clear
Columns(2).Insert
Range("A1", Range("A65536").End(xlUp)).Copy [B1]
Range("B1", Range("B65536").End(xlUp)).Sort [B1]
For Each c In Range("B1", Range("B65536").End(xlUp))
ComboBox1.AddItem c
Next c
Columns(2).Delete
Application.ScreenUpdating = True
End Sub

Pour ce qui est de la sélection en entrant les premières lettres, la
propriété "matchentry" est correctement positionnée à 1.
Cordialement.
Daniel
"Emile" a écrit dans le message de
news:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas trier.
Cela pouvant paraître un peu compliqué (car je m'explique peut-être mal)
j'ai préféré joindre un lien sur un fichier exemple.
http://www.cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,




Avatar
JB
Bonsoir,

http://cjoint.com/?lkvwyJNOfm

Private Sub ComboBox1_DropButtonClick()
temp = Range([A1], [A65000].End(xlUp))
Call tri(temp, LBound(temp), UBound(temp)) 'optionnel
Me.ComboBox1.List = temp
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
http://boisgontierjacques.free.fr

On 10 nov, 19:57, "Emile"
wrote:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas trier.
Cela pouvant paraître un peu compliqué (car je m'explique peut-être mal)
j'ai préféré joindre un lien sur un fichier exemple.http://www.cijo int.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,


Avatar
Emile
Super,
Ca fonctionne, merci beaucoup pour votre aide.
Cordialement,
Emile

"Emile" a écrit dans le message de
news:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas trier.
Cela pouvant paraître un peu compliqué (car je m'explique peut-être mal)
j'ai préféré joindre un lien sur un fichier exemple.
http://www.cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,




Avatar
Emile
J'ai encore un souci,
Les données originales ne sont pas sur la même feuillle (que sur mon
exemple)
Le déroulant est sur le feuil1 et les données sont sur la feuil2, de plus je
souhaitrais en limiter la portée.
Vous m'avez proposé:
temp = Range([A1], [A65000].End(xlUp))
Et je souhaiterais un truc dans ce genre là. (fonctionne pas):
temp = Sheets("Feuil2").Range("A7:A" & Range("Historique"))
La ref: Historique et une référence à un cellule qui contient la valeur: 100
donc la séléction est souhaitée pour la feuil2 de (A7:A100)
Merci encore pour votre aide, et désolé de n'avoirt pas été précis sur mon
premier exemple.
Cordialement,
Avatar
Emile63
Bonjour JB,
J'ai encore un souci,
Les données originales ne sont pas sur la même feuillle (que sur mon exemple)
Le déroulant est sur le feuil1 et les données sont sur la feuil2, de plus je
souhaitrais en limiter la portée.
Vous m'avez proposé:
temp = Range([A1], [A65000].End(xlUp))
Et je souhaiterais arriver à un truc dans ce genre là. (fonctionne pas):
temp = Sheets("Feuil2").Range("A7:A" & Range("Historique"))
La ref: Historique et une référence à un cellule qui contient la valeur: 100
(mais qui se veut modifiable)
donc, sur l'exemple, la séléction est souhaitée pour la feuil2 de (A7:A100)
Merci encore pour votre aide, et désolé de n'avoirt pas été précis sur mon
premier exemple.
Cordialement,



Bonsoir,

http://cjoint.com/?lkvwyJNOfm

Private Sub ComboBox1_DropButtonClick()
temp = Range([A1], [A65000].End(xlUp))
Call tri(temp, LBound(temp), UBound(temp)) 'optionnel
Me.ComboBox1.List = temp
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
http://boisgontierjacques.free.fr

On 10 nov, 19:57, "Emile"
wrote:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas trier.
Cela pouvant paraître un peu compliqué (car je m'explique peut-être mal)
j'ai préféré joindre un lien sur un fichier exemple.http://www.cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,







Avatar
JB
Bonjour,

http://cjoint.com/?lplrw6aLEz
http://cjoint.com/?lplrMyMRTh

JB


On 15 nov, 10:24, Emile63 wrote:
Bonjour JB,
J'ai encore un souci,
Les données originales ne sont pas sur la même feuillle (que sur mon e xemple)
Le déroulant est sur le feuil1 et les données sont sur la feuil2, de p lus je
souhaitrais en limiter la portée.
Vous m'avez proposé:
temp = Range([A1], [A65000].End(xlUp))
Et je souhaiterais arriver à un truc dans ce genre là. (fonctionne pas ):
temp = Sheets("Feuil2").Range("A7:A" & Range("Historique"))
La ref: Historique et une référence à un cellule qui contient la val eur: 100
(mais qui se veut modifiable)
donc, sur l'exemple, la séléction est souhaitée pour la feuil2 de (A 7:A100)
Merci encore pour votre aide, et désolé de n'avoirt pas été préc is sur mon
premier exemple.
Cordialement,




Bonsoir,

http://cjoint.com/?lkvwyJNOfm

Private Sub ComboBox1_DropButtonClick()
temp = Range([A1], [A65000].End(xlUp))
Call tri(temp, LBound(temp), UBound(temp)) 'optionnel
Me.ComboBox1.List = temp
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
http://boisgontierjacques.free.fr

On 10 nov, 19:57, "Emile"
wrote:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas tri er.
Cela pouvant paraître un peu compliqué (car je m'explique peut-ê tre mal)
j'ai préféré joindre un lien sur un fichier exemple.http://www.c ijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
Emile63
On 15 nov, 11:17, JB wrote:
Bonjour,

http://cjoint.com/?lplrw6aLEzhttp://cjoint.com/?lplrMyMRTh

JB

On 15 nov, 10:24, Emile63 wrote:



Bonjour JB,
J'ai encore un souci,
Les données originales ne sont pas sur la même feuillle (que sur mon exemple)
Le déroulant est sur le feuil1 et les données sont sur la feuil2, de plus je
souhaitrais en limiter la portée.
Vous m'avez proposé:
temp = Range([A1], [A65000].End(xlUp))
Et je souhaiterais arriver à un truc dans ce genre là. (fonctionne p as):
temp = Sheets("Feuil2").Range("A7:A" & Range("Historique"))
La ref: Historique et une référence à un cellule qui contient la v aleur: 100
(mais qui se veut modifiable)
donc, sur l'exemple, la séléction est souhaitée pour la feuil2 de (A7:A100)
Merci encore pour votre aide, et désolé de n'avoirt pas été pr écis sur mon
premier exemple.
Cordialement,



Bonsoir,

http://cjoint.com/?lkvwyJNOfm

Private Sub ComboBox1_DropButtonClick()
temp = Range([A1], [A65000].End(xlUp))
Call tri(temp, LBound(temp), UBound(temp)) 'optionnel
Me.ComboBox1.List = temp
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
http://boisgontierjacques.free.fr

On 10 nov, 19:57, "Emile"
wrote:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'e st égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas t rier.
Cela pouvant paraître un peu compliqué (car je m'explique peut- être mal)
j'ai préféré joindre un lien sur un fichier exemple.http://www .cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,- Masquer le texte des messages précédents -




Merci JB,

Ton second exemple est ce qu'il me fallait ;-))

- Comment puis-je faire pour activer la touche "Enter" ou "TAB" afin
de quitter la "ListBox"
une fois mon choix sélectionné?




Avatar
JB
Je ne comprends pas. J'ai ajouté la récup du résultat:

http://cjoint.com/?lpowbETOW1

JB



On 15 nov, 12:08, Emile63 wrote:
On 15 nov, 11:17, JB wrote:



Bonjour,

http://cjoint.com/?lplrw6aLEzhttp://cjoint.com/?lplrMyMRTh

JB

On 15 nov, 10:24, Emile63 wrote:

Bonjour JB,
J'ai encore un souci,
Les données originales ne sont pas sur la même feuillle (que sur m on exemple)
Le déroulant est sur le feuil1 et les données sont sur la feuil2, de plus je
souhaitrais en limiter la portée.
Vous m'avez proposé:
temp = Range([A1], [A65000].End(xlUp))
Et je souhaiterais arriver à un truc dans ce genre là. (fonctionne pas):
temp = Sheets("Feuil2").Range("A7:A" & Range("Historique"))
La ref: Historique et une référence à un cellule qui contient la valeur: 100
(mais qui se veut modifiable)
donc, sur l'exemple, la séléction est souhaitée pour la feuil2 d e (A7:A100)
Merci encore pour votre aide, et désolé de n'avoirt pas été pr écis sur mon
premier exemple.
Cordialement,




Bonsoir,

http://cjoint.com/?lkvwyJNOfm

Private Sub ComboBox1_DropButtonClick()
temp = Range([A1], [A65000].End(xlUp))
Call tri(temp, LBound(temp), UBound(temp)) 'optionnel
Me.ComboBox1.List = temp
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
http://boisgontierjacques.free.fr

On 10 nov, 19:57, "Emile"
wrote:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m 'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas trier.
Cela pouvant paraître un peu compliqué (car je m'explique peut -être mal)
j'ai préféré joindre un lien sur un fichier exemple.http://w ww.cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,- Masquer le texte des messages précédents -





Merci JB,
Ton second exemple est ce qu'il me fallait ;-))

- Comment puis-je faire pour activer la touche "Enter" ou "TAB" afin
de quitter la "ListBox"
une fois mon choix sélectionné?- Masquer le texte des messages préc édents -

- Afficher le texte des messages précédents -






Avatar
Emile63
On 15 nov, 14:22, JB wrote:
Je ne comprends pas. J'ai ajouté la récup du résultat:

http://cjoint.com/?lpowbETOW1

JB

On 15 nov, 12:08, Emile63 wrote:



On 15 nov, 11:17, JB wrote:

Bonjour,

http://cjoint.com/?lplrw6aLEzhttp://cjoint.com/?lplrMyMRTh

JB

On 15 nov, 10:24, Emile63 wrote:

Bonjour JB,
J'ai encore un souci,
Les données originales ne sont pas sur la même feuillle (que sur mon exemple)
Le déroulant est sur le feuil1 et les données sont sur la feuil2 , de plus je
souhaitrais en limiter la portée.
Vous m'avez proposé:
temp = Range([A1], [A65000].End(xlUp))
Et je souhaiterais arriver à un truc dans ce genre là. (fonction ne pas):
temp = Sheets("Feuil2").Range("A7:A" & Range("Historique"))
La ref: Historique et une référence à un cellule qui contient la valeur: 100
(mais qui se veut modifiable)
donc, sur l'exemple, la séléction est souhaitée pour la feuil2 de (A7:A100)
Merci encore pour votre aide, et désolé de n'avoirt pas été précis sur mon
premier exemple.
Cordialement,





Bonsoir,

http://cjoint.com/?lkvwyJNOfm

Private Sub ComboBox1_DropButtonClick()
temp = Range([A1], [A65000].End(xlUp))
Call tri(temp, LBound(temp), UBound(temp)) 'optionnel
Me.ComboBox1.List = temp
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
http://boisgontierjacques.free.fr

On 10 nov, 19:57, "Emile" >
wrote:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux p as trier.
Cela pouvant paraître un peu compliqué (car je m'explique pe ut-être mal)
j'ai préféré joindre un lien sur un fichier exemple.http:/ /www.cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,- Masquer le texte des messages précédents -





Merci JB,
Ton second exemple est ce qu'il me fallait ;-))

- Comment puis-je faire pour activer la touche "Enter" ou "TAB" afin
de quitter la "ListBox"
une fois mon choix sélectionné?- Masquer le texte des messages pré cédents -

- Afficher le texte des messages précédents




Bonjour JB,

Désolé, je ne me suis pas bien expliqué :-)
En fait, dans ma feuille excel, une fois le résultat sélectionné il
s'affiche directement dans une cellule pré-établie par le LinkedCell .
Jusqu'ici tout roule.
Ce que je voulais dire c'est qu'à partir d'ici, l'enregistrement
"choisi" reste sélectionné (fond bleu) dans la ListBox et celle-ci
garde le focus.
Et moi je souhaiterais, en appuyant sur une touche -TAB - par
exemple, quitter la listebox et que la cellule suivante de ma feuille
soit sélectionnée.
Par exemple, si LinkedCell est en Worksheets("MaFeuille").Cells(1, 1),
que la sélection passe en Cells(1, 2) après la sélection de ListBox.
Merci de ton aide,
Cordialement,






Avatar
JB
http://cjoint.com/?lpvaEGtBGY

JB


On 15 nov, 15:59, Emile63 wrote:
On 15 nov, 14:22, JB wrote:





Je ne comprends pas. J'ai ajouté la récup du résultat:

http://cjoint.com/?lpowbETOW1

JB

On 15 nov, 12:08, Emile63 wrote:

On 15 nov, 11:17, JB wrote:

Bonjour,

http://cjoint.com/?lplrw6aLEzhttp://cjoint.com/?lplrMyMRTh

JB

On 15 nov, 10:24, Emile63 wrote:

Bonjour JB,
J'ai encore un souci,
Les données originales ne sont pas sur la même feuillle (que s ur mon exemple)
Le déroulant est sur le feuil1 et les données sont sur la feui l2, de plus je
souhaitrais en limiter la portée.
Vous m'avez proposé:
temp = Range([A1], [A65000].End(xlUp))
Et je souhaiterais arriver à un truc dans ce genre là. (foncti onne pas):
temp = Sheets("Feuil2").Range("A7:A" & Range("Historique"))
La ref: Historique et une référence à un cellule qui contien t la valeur: 100
(mais qui se veut modifiable)
donc, sur l'exemple, la séléction est souhaitée pour la feui l2 de (A7:A100)
Merci encore pour votre aide, et désolé de n'avoirt pas ét é précis sur mon
premier exemple.
Cordialement,






Bonsoir,

http://cjoint.com/?lkvwyJNOfm

Private Sub ComboBox1_DropButtonClick()
temp = Range([A1], [A65000].End(xlUp))
Call tri(temp, LBound(temp), UBound(temp)) 'optionnel
Me.ComboBox1.List = temp
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
http://boisgontierjacques.free.fr

On 10 nov, 19:57, "Emile" fr>
wrote:
Bonjour à tous,
Je cherche à trier le contenu d'une combobox (ou listBox, ça m'est égale)
posée sur une feuille (et non pas dans un userform)
dont la racine est issue d'une base de donnée que je ne peux pas trier.
Cela pouvant paraître un peu compliqué (car je m'explique peut-être mal)
j'ai préféré joindre un lien sur un fichier exemple.http ://www.cijoint.fr/cij52203818531320.xls
Je vous remercie d'avance pour votre aide.
Cordialement,- Masquer le texte des messages précédents -





Merci JB,
Ton second exemple est ce qu'il me fallait ;-))

- Comment puis-je faire pour activer la touche "Enter" ou "TAB" afin
de quitter la "ListBox"
une fois mon choix sélectionné?- Masquer le texte des messages pr écédents -

- Afficher le texte des messages précédents



Bonjour JB,

Désolé, je ne me suis pas bien expliqué :-)
En fait, dans ma feuille excel, une fois le résultat sélectionné il
s'affiche directement dans une cellule pré-établie par le LinkedCell .
Jusqu'ici tout roule.
Ce que je voulais dire c'est qu'à partir d'ici, l'enregistrement
"choisi" reste sélectionné (fond bleu) dans la ListBox et celle-ci
garde le focus.
Et moi je souhaiterais, en appuyant sur une touche -TAB - par
exemple, quitter la listebox et que la cellule suivante de ma feuille
soit sélectionnée.
Par exemple, si LinkedCell est en Worksheets("MaFeuille").Cells(1, 1),
que la sélection passe en Cells(1, 2) après la sélection de ListBox.
Merci de ton aide,
Cordialement,- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -








1 2