Trié des combobox par ordre alphabétique

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

prorudess

XLDnaute Junior
Bonjour à tous,
J'utilise un code que j'ai trouvé sur un forum pour incrémenter des données en cascade dans mes combobox.
Celui-ci fonctionne bien, il supprime les doublons, mais par contre il ne me trie pas les données par ordre alphabétique.
A la vue du code, comment pourrais-je adapter cela pour résoudre mon problème ?
D'avance merci de votre aide

Code:
Private Sub UserForm_Initialize()
Dim L As Long
    'Mémoriser le tableau de données avec une colonne supplémentaire qui servira à la
    'gestion des niveaux d'alimentation des combobox
    With Feuil8 'nom de la feuille
        L = .Range("A65536").End(xlUp).Row 'dernière ligne
        TabTemp = .Range("A2:E" & L).Value '1ère ligne B3
    End With
    MAJCombo Client, 0
End Sub
-------------------------------------------------------------------------------------------
Private Sub Client_Change()
Dim L As Long
    'Remise à zéro des niveaux
    For L = 1 To UBound(TabTemp, 1)
        TabTemp(L, 4) = 0
    Next L
    'MAJ du combo n°2 avec un flag de niveau 1
    MAJCombo Prestation, 1, Client.Text
    'RAZ des combo suivantes
    Dossier.Clear
End Sub
-------------------------------------------------------------------------------------------
Private Sub Prestation_Change()
    'MAJ du combo n°3 avec un flag de niveau 2
    MAJCombo Dossier, 2, Prestation.Text
End Sub
-------------------------------------------------------------------------------------------
Private Sub MAJCombo(Combo As ComboBox, Niv As Byte, Optional V As String)
Dim Coll As New Collection
Dim L As Long
    'Gestion du flag de niveau dans la colonne supplémentaire (4) du tableau
    For L = 1 To UBound(TabTemp, 1)
        If Niv = 0 Then
            'RAZ du flag de niveau
            TabTemp(L, 4) = 0
        Else
            TabTemp(L, 4) = Application.WorksheetFunction.Min(TabTemp(L, 4), Niv - 1)
            'Si l'élément est retenu alors on incrémente le flag de niveau
            If TabTemp(L, Niv) = V Then
                TabTemp(L, 4) = TabTemp(L, 4) + 1
            End If
        End If
    Next L
    'Détermination de la liste sans doublon
    On Error Resume Next
    For L = 1 To UBound(TabTemp, 1)
        If TabTemp(L, 4) = Niv Then
            Coll.Add TabTemp(L, Niv + 1), CStr(TabTemp(L, Niv + 1))
        End If
    Next L
    On Error GoTo 0
    'Mise à jour du combobox
    Combo.Clear
    For L = 1 To Coll.Count
        Combo.AddItem Coll.Item(L)
    Next L
End Sub
 
Dernière édition:
Re : Trié des combobox par ordre alphabétique

Bonjour prorudess

A tester:

Code:
'Mise à jour du combobox
    Combo.Clear
    
    For i = 1 To Coll.count - 1
        For j = i + 1 To Coll.count
            If Coll(i) > Coll(j) Then
                Swap1 = Coll(i)
                Swap2 = Coll(j)
                Coll.Add Swap1, before:=j
                Coll.Add Swap2, before:=i
                Coll.Remove i + 1
                Coll.Remove j + 1
            End If
        Next j
    Next i

For L = 1 To Coll.Count
   Combo.AddItem Coll.Item(L)
Next L
 
Re : Trié des combobox par ordre alphabétique

Bonjour,

-Ne pas utiliser les collections pour éliminer les doublons (lent). Utiliser Dictionary.
-Ne surtout pas trier une collection (32 sec pour 1200 items contre 0,25 sec pour un tableau)
-Utiliser une méthode de tri rapide (quick sort)

Menus en cascade

JB
 
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

Réponses
8
Affichages
233
Réponses
5
Affichages
182
Réponses
4
Affichages
461
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
144
Réponses
4
Affichages
177
Réponses
3
Affichages
193
Réponses
5
Affichages
232
Réponses
10
Affichages
281
Retour