Tri alphabétique dans ComboBox

  • Initiateur de la discussion Initiateur de la discussion Halffy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Halffy

XLDnaute Occasionnel
Bonsoir à Tous,

Je solicite à nouveau votre aide afin de trouver une solution pour trier mes listes de ComboBoxs.
Bien qu'ayant parcouru en long et large cet excellent forum, essayé d'appliquer les solutions de BoisGontier par exemple, je n'arrive pas à mettre en application celles-ci; cela vient probablement je pense, de la façon dont j'alimente mes listes de Combo.
D'où ce nouveau post /
Je vous joins par ailleurs un fichier afin de vous expliquer de quoi tout cela retourne.
Avec tous mes remercierments, ne serait-ce de m'avoir lu.
Halffy /.
 

Pièces jointes

Re : Tri alphabétique dans ComboBox

Bonjour,


Code:
Private Sub UserForm_Initialize()
  Set f = Sheets("feuil1")
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[H4], f.[H65000].End(xlUp))
    MonDico(c.Value) = c.Value
  Next c
  temp = MonDico.items
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox7.List = temp
End Sub

Private Sub ComboBox7_Change()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range([H4], [H65000].End(xlUp))
    If c = Me.ComboBox7 Then MonDico(c.Offset(0, -4).Value) = c.Offset(0, -4).Value
  Next c
  temp = MonDico.items
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox6.List = temp
End Sub

Private Sub ComboBox6_Change()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range([d4], [d65000].End(xlUp))
    If c = Me.ComboBox6 Then MonDico(c.Offset(0, -1).Value) = c.Offset(0, -1).Value
  Next c
  temp = MonDico.items
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox5.List = temp
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
        temp = a(g): a(g) = a(d): a(d) = 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

http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm#Cascade3Niv

JB
 

Pièces jointes

Dernière édition:
Re : Tri alphabétique dans ComboBox

Bonjour Hallfy, BOISGONTIER,

Voici ma méthode, certes un peu "style amateur"', mais qui fonctionne très bien aussi.

Code:
Private Sub ComboBox7_Change()
ComboBox5.Clear
ComboBox6.Clear
With Sheets("Feuil1")
  .Range("U1:U65536").ClearContents
  For n = 3 To .Range("D65536").End(xlUp).Row
    If CStr(.Range("H" & n)) = ComboBox7 Then
      Set ch = .Range("U:U").Find(.Range("D" & n), LookIn:=xlValues, lookat:=xlWhole)
      If ch Is Nothing Then
        .Range("U" & .Range("U65536").End(xlUp).Row + 1) = .Range("D" & n)
      End If
    End If
  Next n
  .Columns("U:U").Sort Key1:=Range("U2"), Order1:=xlAscending, Header:=xlNo, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
  For n = 1 To .Range("U65536").End(xlUp).Row
    ComboBox6.AddItem .Range("U" & n)
  Next
  .Range("U:U").ClearContents
End With
End Sub

Private Sub ComboBox6_Change()
ComboBox5.Clear
With Sheets("Feuil1")
  .Range("U1:U65536").ClearContents
  For n = 3 To .Range("D65536").End(xlUp).Row
    If .Range("H" & n) = ComboBox7 And .Range("D" & n) = ComboBox6 Then
      Set ch = .Range("U:U").Find(.Range("C" & n), LookIn:=xlValues, lookat:=xlWhole)
      If ch Is Nothing Then
        .Range("U" & .Range("U65536").End(xlUp).Row + 1) = .Range("C" & n)
      End If
    End If
  Next n
  .Columns("U:U").Sort Key1:=Range("U2"), Order1:=xlAscending, Header:=xlNo, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
  For n = 1 To .Range("U65536").End(xlUp).Row
    ComboBox5.AddItem .Range("U" & n)
  Next
  .Range("U:U").ClearContents
End With
End Sub

Cordialement.
 
Dernière édition:
Re : Tri alphabétique dans ComboBox

Bonjour à tous,
BOISGONTIER, Papou-Net, Staple1600, Lii,

Je veux vous remercier avant tout de l'intérêt que vous avez bien voulu porter à ma requête; je constate que ce forum est toujours aussi actif (mais je n'en doutais pas un seul instant 😀).
Je souhaiterai aussi regarder de plus près vos différentes solutions, afin de les "marier" avec mes macros existantes car en fait le Tri alphabétique ne représente qu'un seul problème de mon projet auquel je ne trouvais pas de réponse (d'où mon post).
Il faut que je regarde si cela "cadre" bien avec le reste 😀 /
Donc j'exploite tout ça et je vous tiens au courant 😉
Par contre, n'étant pas un pro dans ce domaine (je sais simplement me débrouiller), je pense mettre un certain temps... et même un temps certain 😛.
Donc ne vous inquiétez pas si je ne vous donne pas de nouvelles de suite; Toutefois, soyez assurés que je vous rendrai compte de mon avancée... c'est la moindre des choses.
Donc, encore Merci / et je vous dis à bientôt /
Halffy /.
 
Dernière édition:
Re : Tri alphabétique dans ComboBox

Bonsoir le Forum,
BOISGONTIER, Papou-Net, Staple1600, Lii,

Comme promis, des nouvelles donc, de mes avancées 😀
Alors plusieurs choses (mais que des bonnes 😉 ):
Premièrement, Bravo à vous tous, et Merci beaucoup pour vos diverses solutions;
BoisGontier, à la vue de mes macros déjà existantes, j'ai dû compiler quelque peu avec la tienne... mais ça marche exactement comme je le voulais 😎 : Merci Beaucoup!!
Papou-Net, Merci pour ton aide antérieure; elle m'aura bien servie également puisqu'elle complète parfaitement les autres macros déjà existantes dans mon projet 🙂
Staple1600: en effet, non je n'avais pas vu cette solution puisqu'elle n'était pas apparue suite à ma recherche avec le moteur; mais Merci également 😉
Lii, tous mes remerciements pour ton lien, seulement, n'étant pas un pro des macros, il me fallait absolument une macro pour ComboBox et non ListView, car je ne sais pas si j'aurais su l'adapter à la situation.
Toutefois, avant de poster, j'essais toujours de me débrouiller avec les posts existants... des fois, j'y arrive 😱 / mais des fois, j'y arrive pas 😀
Mais je ne l'ai pas mal pris / de plus l'historique est tellement immense en nombre de post, qu'il peut arriver de passer à côté d'une solution...

Alors: Merci, Merci à vous Tous pour votre temps, votre patience, et votre gentillesse.
Je vous souhaite une bonne soirée... enfin nuit 🙄
Halffy, qui ne va pas tarder à aller se coucher aussi / Au plaisir.
 
Re : Tri alphabétique dans ComboBox

Bonsoir Halffy


Merci à toi pour ton retour exhaustif

C'est apprécié (car de plus en plus rare sur le forum)

Je te citerai à l'avenir en tant que modèle de forumeur (qui a su prendre de bonnes habitudes)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

C
Réponses
10
Affichages
2 K
Ctrl-Alt-Suppr
C
Z
Réponses
0
Affichages
7 K
zoummuoz
Z
Retour