Tri dans une chaine de caractères.
RoshMe
Messages postés
4
Statut
Membre
-
RoshMe Messages postés 4 Statut Membre -
RoshMe Messages postés 4 Statut Membre -
Bonjour,
Je dispose de 7000 chaines de 5 caractères (Colonne G, une chaine de caractères par ligne) que je veux répéter dans une colonne I à l'identique, mais chaque chaine doit être triée par ordre décroissant (ou croissant, je cherche juste à les trier, peu importe du moment que l'ordre soit le même partout).
Exemple : ligne 1 : colonne G : "58729" -> Colonne I : "98752"
ligne 2 : colonne G : "52224" -> colonne I : "54222"
......
.....
J'essaye de faire quelque chose avec Mid, mais je me perds dans mes boucles...
Si quelqu'un a une idée, cela m'aiderait énormément...
Merci beaucoup.
Je dispose de 7000 chaines de 5 caractères (Colonne G, une chaine de caractères par ligne) que je veux répéter dans une colonne I à l'identique, mais chaque chaine doit être triée par ordre décroissant (ou croissant, je cherche juste à les trier, peu importe du moment que l'ordre soit le même partout).
Exemple : ligne 1 : colonne G : "58729" -> Colonne I : "98752"
ligne 2 : colonne G : "52224" -> colonne I : "54222"
......
.....
J'essaye de faire quelque chose avec Mid, mais je me perds dans mes boucles...
Si quelqu'un a une idée, cela m'aiderait énormément...
Merci beaucoup.
A voir également:
- Tri dans une chaine de caractères.
- Comment faire un tri personnalisé sur excel - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractères ascii - Guide
- Logiciel tri photo - Guide
1 réponse
Après avoir bien bien galéré, je m'en sors avec une fonction qui fait ce que je voulais, je vous la colle ici :
Option Compare Text
Function SortString(ByVal iRange, Optional Croissant As Boolean = True)
Dim i%, j%, sTemp$
For j = 1 To Len(iRange) - 1
For i = 1 To Len(iRange) - 1
If Mid(iRange, i, 1) > Mid(iRange, i + 1, 1) Then
sTemp = Mid(iRange, i, 1)
Mid(iRange, i, 1) = Mid(iRange, i + 1, 1)
Mid(iRange, i + 1, 1) = sTemp
End If
Next
Next
If Croissant = False Then
For i = Len(iRange) To 1 Step -1
SortString = SortString & Mid(iRange, i, 1)
Next
Exit Function
End If
SortString = iRange
End Function
Je me suis bien inspiré de ce que j'ai trouvé sur un forum.
Option Compare Text
Function SortString(ByVal iRange, Optional Croissant As Boolean = True)
Dim i%, j%, sTemp$
For j = 1 To Len(iRange) - 1
For i = 1 To Len(iRange) - 1
If Mid(iRange, i, 1) > Mid(iRange, i + 1, 1) Then
sTemp = Mid(iRange, i, 1)
Mid(iRange, i, 1) = Mid(iRange, i + 1, 1)
Mid(iRange, i + 1, 1) = sTemp
End If
Next
Next
If Croissant = False Then
For i = Len(iRange) To 1 Step -1
SortString = SortString & Mid(iRange, i, 1)
Next
Exit Function
End If
SortString = iRange
End Function
Je me suis bien inspiré de ce que j'ai trouvé sur un forum.