XL 2010 Trier, en VBA, un Array par ordre alphabétique

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Je me heurte à un problème apparemment simple.
J'ai un Array :
Liste = Array("jaune", "vert", "orange", "blanc", "rouge", "noir", "fuchsia", "marron")

Comment le trier par odre alphabétique, afin d'obtenir :
Liste = Array("blanc", "fuchsia","jaune", "marron", "noir", "orange", "rouge", "vert")

Merci d'avance pour toute réponse.
 
Solution
Cela dit en VBA on s'en sort très bien en utilisant 2 tableaux a et b, fichier (2) :
VB:
Private Sub Combobox1_GotFocus()
Dim a, b, x%
a = Array("jaune", "vert", "guaraní", "georgien", "rouge", "noir", "fuchsia", "marron") 'tableau à une dimension sans accents et en minuscules, à adapter
b = Array("jaune", "vert", "Guaraní", "Géorgien", "rouge", "noir", "fuchsia", "marron") 'tableau à une dimension avec accents, à adapter
tri a, b, 0, UBound(a)
ComboBox1.List = b 'liste avec accents
ComboBox1.DropDown 'déroule la liste
End Sub

Sub tri(a, b, gauc, droi) ' Quick sort
Dim ref, g, d, temp
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 <=...

laurent950

XLDnaute Accro
Bonjour @Magic_Doctor

A l'aide d'une REGEX :

VB:
Function DeAccent(s As String) As String
Dim Matches As Object
Dim Match As Object
Dim Reg As Object
    Set Reg = CreateObject("VBScript.RegExp")
Const sAccents As String = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const sNoAccents As String = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
'
      Reg.MultiLine = True: Reg.IgnoreCase = False: Reg.Global = True: Debug.Print Reg.test(s)
      Reg.Pattern = "(.)"
      Reg.Pattern = Mid(Reg.Replace(sAccents, "|$1"), 2)
      Set Matches = Reg.Execute(s)
          For Each Match In Matches
            s = Replace(s, Match, Mid(sNoAccents, InStr(1, sAccents, Match, 0), 1))
          Next Match
' libération d'objets
    Set Matches = Nothing
    Set Match = Nothing
    Set Reg = Nothing
  DeAccent = s
End Function
 

Discussions similaires

Statistiques des forums

Discussions
312 161
Messages
2 085 843
Membres
103 003
dernier inscrit
Maxmarie14