Jouxte
XLDnaute Occasionnel
Bonjour à toutes et tous,
J'utilise une macro formulée je crois par J. Boisgontier et qui me sert à créer des listes de validation.
Cette macro est presque parfaite pour mon usage.
Elle trie les valeurs uniques dans l'ordre suivant : Nombres, Textes (dont l'initiale est une majuscule) puis textes (dont l'initiale est une minuscule) par exemple :
125
Paris
Versailles
Versailles RD
paris
versailles
versailles rg
Quelqu'un pourrai-il m'aider à modifier la macro ci-dessous pour remettre en ordre alphabétique les majuscules et minuscules
Par avance merci.
Function SansDoublonsTrié(champ As Range)
Set MonDico = CreateObject("Scripting.Dictionary")
temp = champ
For i = 1 To UBound(temp, 1)
If Not MonDico.Exists(temp(i, 1)) And temp(i, 1) <> 0 Then
MonDico.Add temp(i, 1), temp(i, 1)
End If
Next i
a = MonDico.items
j = UBound(a)
Call tri(a, 0, j)
SansDoublonsTrié = Application.Transpose(a)
End Function
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
J'utilise une macro formulée je crois par J. Boisgontier et qui me sert à créer des listes de validation.
Cette macro est presque parfaite pour mon usage.
Elle trie les valeurs uniques dans l'ordre suivant : Nombres, Textes (dont l'initiale est une majuscule) puis textes (dont l'initiale est une minuscule) par exemple :
125
Paris
Versailles
Versailles RD
paris
versailles
versailles rg
Quelqu'un pourrai-il m'aider à modifier la macro ci-dessous pour remettre en ordre alphabétique les majuscules et minuscules
Par avance merci.
Function SansDoublonsTrié(champ As Range)
Set MonDico = CreateObject("Scripting.Dictionary")
temp = champ
For i = 1 To UBound(temp, 1)
If Not MonDico.Exists(temp(i, 1)) And temp(i, 1) <> 0 Then
MonDico.Add temp(i, 1), temp(i, 1)
End If
Next i
a = MonDico.items
j = UBound(a)
Call tri(a, 0, j)
SansDoublonsTrié = Application.Transpose(a)
End Function
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