Tri liste de pays par ordre alphabetique dans un objet
Résolu
Jojos54
Messages postés
15
Statut
Membre
-
Jojos54 Messages postés 15 Statut Membre -
Jojos54 Messages postés 15 Statut Membre -
Bonjour,
j'ai une fonction qui me récupere une liste de pays sans doublon à partir d'une feuille excel. Je recupère cette liste et l'intègre dans une combobox
Cependant je n'arrive pas à trier ma liste par ordre alphabetique
Ci dessous le code actuel qui fonctionne mais sans tri
Private Sub Liste_country2() 'à l'initialisation de l'UserForm
Dim i, As Long 'déclare la variable I (Incrément)
Dim d As Object 'déclare la variable D (Dictionnaire)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Set O = Sheets("work orders temp") 'définit l'onglet O
TC = O.Range("H5:H" & O.Range("H65000").End(xlUp).Row)
Set d = CreateObject("Scripting.Dictionary") 'définit le dictionanire D
For i = 1 To UBound(TC) 'boucle sur toutes les lignes I du tableau de cellules TC (en partant de la seconde)
d(TC(i, 1)) = "" 'alimente le dictionnaire D
Next i 'prochaine ligne de la boucle
Me.ComboBox8.list = d.keys 'alimente la Combobox8 avec la liste des éléments du dictionnaire D sans doublons
end sub
J'ai vu a plusieurs endroit des fonctions de Tri quicksort shellsort, mais je n'arrive pas à les appliquer pour info le lien http://boisgontierjacques.free.fr/pages_site/tableaux.htm#filtrecoltab
Merci de votre aide,
j'ai une fonction qui me récupere une liste de pays sans doublon à partir d'une feuille excel. Je recupère cette liste et l'intègre dans une combobox
Cependant je n'arrive pas à trier ma liste par ordre alphabetique
Ci dessous le code actuel qui fonctionne mais sans tri
Private Sub Liste_country2() 'à l'initialisation de l'UserForm
Dim i, As Long 'déclare la variable I (Incrément)
Dim d As Object 'déclare la variable D (Dictionnaire)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Set O = Sheets("work orders temp") 'définit l'onglet O
TC = O.Range("H5:H" & O.Range("H65000").End(xlUp).Row)
Set d = CreateObject("Scripting.Dictionary") 'définit le dictionanire D
For i = 1 To UBound(TC) 'boucle sur toutes les lignes I du tableau de cellules TC (en partant de la seconde)
d(TC(i, 1)) = "" 'alimente le dictionnaire D
Next i 'prochaine ligne de la boucle
Me.ComboBox8.list = d.keys 'alimente la Combobox8 avec la liste des éléments du dictionnaire D sans doublons
end sub
J'ai vu a plusieurs endroit des fonctions de Tri quicksort shellsort, mais je n'arrive pas à les appliquer pour info le lien http://boisgontierjacques.free.fr/pages_site/tableaux.htm#filtrecoltab
Merci de votre aide,
A voir également:
- Liste des pays du monde par ordre alphabétique excel
- Comment trier par ordre alphabétique sur excel - Guide
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
1 réponse
Bonjour,
Private Sub Liste_country2() 'à l'initialisation de l'UserForm Dim i As Long 'déclare la variable I (Incrément) Dim d As Object 'déclare la variable D (Dictionnaire) Dim O As Worksheet 'déclare la variable O (Onglet) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim TMP Set O = Sheets("work orders temp") 'définit l'onglet O TC = O.Range("H5:H" & O.Range("H65000").End(xlUp).Row) Set d = CreateObject("Scripting.Dictionary") 'définit le dictionanire D For i = 1 To UBound(TC) 'boucle sur toutes les lignes I du tableau de cellules TC (en partant de la seconde) d(TC(i, 1)) = "" 'alimente le dictionnaire D Next i 'prochaine ligne de la boucle '----------------------------- TMP = d.keys 'Table sans doublon Call tri(TMP, LBound(TMP, 1), UBound(TMP, 1)) 'tri alphabétique '---------------------------- Me.ComboBox8.List = TMP 'alimente la Combobox8 avec la liste des éléments du dictionnaire D sans doublons End Sub
Actuellement je n'ai pas la fonction tri,
J'ai tenté de copié celle-ci dans mon code
mais j'ai une incompatibilté de type alors au niveau de la ligne
tableau ou type défini par l'utilisateur attendu
remplacez
par
type d'argument byref incompatible
Dim ref
Dim g As Long
Dim d As Long
Dim temp
Merci de ton aide f89009