• Initiateur de la discussion Initiateur de la discussion lynyrd
  • 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 !

lynyrd

XLDnaute Impliqué
Bonjour le forum
Je souhaiterais trier alphabètiquement la combobox sans qu'il y ait d'incidence sur les autres cellules (j'ai une 3ème feuille dont les cellules sont liées avec la feuille2).
j'ai essayé d'adapter le code de Mr boisgontier mais ca ne fonctionne pas.
Private Sub UserForm_Initialize()
Dim temp()
Set f = Sheets("Feuil2")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row)
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.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
Quelqu'un aurait t'il une petite idée ?
Merci.
 

Pièces jointes

Re : trier combobox

Code:
Dim x, i, j, temp

With ComboBox
    
    ' trie alphabetiques de noms
    For i = 0 To .ListCount - 1
        For j = 0 To .ListCount - 1
            If UCase(.List(i)) < UCase(.List(j)) Then
                temp = .List(j)
                .List(j) = .List(i)
                .List(i) = temp
            End If
        Next j
    Next i
    
    ' suppression des doublons
    For i = 0 To .ListCount - 1
        For j = .ListCount - 1 To i + 1 Step -1
            If UCase(.List(i)) = UCase(.List(j)) Then .RemoveItem (j)
        Next j
    Next i
   
If .ListCount > 0 Then .ListIndex = 0
End With
 
Re : trier combobox

Bonjour,

Tri à bulle hyper-lent à éviter!

Code:
Dim x, i, j, temp
With ComboBox    
    ' trie alphabetiques de noms
    For i = 0 To .ListCount - 1
        For j = 0 To .ListCount - 1
            If UCase(.List(i)) < UCase(.List(j)) Then
                temp = .List(j)
                .List(j) = .List(i)
                .List(i) = temp
            End If
        Next j
    Next i

Tri quick sort

JB
 
Dernière édition:
Re : trier combobox

Re Bonsoir
Dans lexemple de pierrejean j'ai un message d'ereur :
erreur d'execution
'-2147024809 (80070057)'
impossible de lire la propriété list argument non valide

et la ligne"Controls("TextBox" & i) = Sheets("feuil2").Cells(.List(.ListIndex, 1), i)" est surlignée en jaune.
 
- 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

Réponses
3
Affichages
513
Réponses
4
Affichages
540
Réponses
4
Affichages
493
Réponses
1
Affichages
193
Réponses
5
Affichages
196
Réponses
7
Affichages
177
Retour