OVH Cloud OVH Cloud

Tri non alphabetique

2 réponses
Avatar
alain.legrand5
J' utilise Excel pour confectionner un petit dictionnaire=20
des hi=E9roglyphes egyptiens o=F9 les mots doivent =EAtre tri=E9s=20
par ordre alphabetique.
Seulement, l'ordre des lettres n'est pas le m=EAme que celui=20
de la langue fran=E7aise, puisqu'il est le suivant :
a, j, A, w, b, p, f, m, n, r,=20
h, H, x, X, s, S, q, k, g, t, T, d, D
Existe-t-il une m=E9thode ou une macro pour effectuer un tri=20
dans l'ordre de ces lettres ?

2 réponses

Avatar
ru-th
Salut

1er approche mais ne portant que sur la 1ere lettre
faire une liste perso (outils/options) a*, j*, A*, w*, b*, p*, f*, m*, n*,
r*,....

puis faire menu Trier en cochant respecté la casse

a+
rural thierry

"" a écrit
dans le message de news: 716601c401e2$43187710$
J' utilise Excel pour confectionner un petit dictionnaire
des hiéroglyphes egyptiens où les mots doivent être triés
par ordre alphabetique.
Seulement, l'ordre des lettres n'est pas le même que celui
de la langue française, puisqu'il est le suivant :
a, j, A, w, b, p, f, m, n, r,
h, H, x, X, s, S, q, k, g, t, T, d, D
Existe-t-il une méthode ou une macro pour effectuer un tri
dans l'ordre de ces lettres ?
Avatar
Daniel.M
Salut Alain,

Tu te sers d'une colonne temporaire qui fait subir une transformation à tes mots
à l'aide d'une fonction VBA (CarEgyp). Colonne dont tu te sers pour trier.

Par exemple, avec tes mots en colonne A1:Ax.
Mets en B1, la formule suivante:
ÊrEgyp(A1)

Tu copies jusqu'à Bx.
Tu tries A:B avec colonne B comme clé.

Tu détruis B:B si désiré.

L'idée de la fonction CarEgyp est d'inscrire tes lettres en priorité dans s1$ et
de décliner l'alphabet normal en s2$. Ainsi, tes lettres seront remplacées 'en
ordre' par les lettres ordonnées de l'alphabet. Le mot résultat est
incompréhensible mais il correspond à l'ordre de tri désiré.

Tu t'assures d'avoir le même nombre de lettres en s1 et s2.

Salutations,

Daniel M.

' Mets le code suivante dans un module
Const s1$ = "ajAwbpfmnrHXsqkgTD"
Const s2$ = "abcdefghijklmnopqr"

Function CarEgyp(Chaine$) As String
CarEgyp = MultiSubstitute(Chaine, s1, s2)
End Function

'MultiSubstitute
'In an InputStr, replace all chars belonging to ToBeReplacedChars
'by the corresponding chars in ByChars
'ToBeReplacedChars and ByChars should be of the same length
'or else it removes the found chars
'Returns the string with the characters replaced (or removed)
'By Daniel M.
Function MultiSubstitute(InputStr As String, _
ToBeReplacedChars As String, ByChars As String) As String

Dim s As String, i As Integer
Dim anOffset As Integer, len_Input As Integer, len_ByChars As Integer

len_Input = Len(InputStr)
len_ByChars = Len(ByChars)
For i = 1 To len_Input
s = Mid(InputStr, i, 1)
anOffset = InStr(ToBeReplacedChars, s)
If anOffset > 0 Then
If anOffset <= len_ByChars Then
MultiSubstitute = MultiSubstitute & _
Mid(ByChars, anOffset, 1)
End If
Else
MultiSubstitute = MultiSubstitute & s
End If
Next

End Function




"" wrote in
message news:716601c401e2$43187710$
J' utilise Excel pour confectionner un petit dictionnaire
des hiéroglyphes egyptiens où les mots doivent être triés
par ordre alphabetique.
Seulement, l'ordre des lettres n'est pas le même que celui
de la langue française, puisqu'il est le suivant :
a, j, A, w, b, p, f, m, n, r,
h, H, x, X, s, S, q, k, g, t, T, d, D
Existe-t-il une méthode ou une macro pour effectuer un tri
dans l'ordre de ces lettres ?