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
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: