XL 2013 Tri alphabétique des lettres d'une chaîne de caractères

RW02

XLDnaute Nouveau
Bonjour,

Je cherche une fonction personnalisée qui me permette de trier une chaîne de caractères. J'avais cela à une époque et la fonction s'appelait SortString.

En gros, si j'ai NATUREL en A1, je veux que ma fonction me donne AELNRTU en B1.

Merci d'avance pour votre aide,
Régis
 

ODVJ

XLDnaute Impliqué
Bonsoir,

Avec Morefunc de Laurent Longre, j'utilise :
=MCONCAT(TRANSPOSE(SIERREUR(CAR(PETITE.VALEUR(CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1));LIGNE(INDIRECT("1:"&NBCAR(A1)))));"")))

ou encore :
=MCONCAT(TRIV(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1);;1))

cordialement

PS : à valider pat CTRL+MAJ+ENTER
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Une fonction personnalisée SortString de mon cru.

La fonction :
  • ne distingue pas les majuscules des minuscules (sinon supprimer Ucase dans le code)
  • rejette les caractères accentués à la fin de la chaine résultat

VB:
Function SortString(x) As String
Dim i&, aux$, ech As Boolean

   If Len(x) < 2 Then
      SortString = x
   Else
      ReDim t(1 To Len(x))
      For i = 1 To Len(x): t(i) = Mid(x, i, 1): Next
      Do
         ech = False
         For i = 1 To Len(x) - 1
            If UCase(t(i)) > UCase(t(i + 1)) Then
               aux = t(i): t(i) = t(i + 1): t(i + 1) = aux: ech = True
            End If
         Next i
      Loop Until Not ech
      SortString = Join(t, "")
   End If
End Function
 

Pièces jointes

  • RW02- SortString- v1.xlsm
    15.1 KB · Affichages: 52

Dranreb

XLDnaute Barbatruc
Boujour.
Une autre, peut être plus adaptée aux grandes phrases.
VB:
Function SSDranreb(ByVal Txt As String) As String
Dim TNb(1 To 255) As Integer, P&, A&
For P = 1 To Len(Txt): A = Asc(UCase$(Mid$(Txt, P, 1))): TNb(A) = TNb(A) + 1: Next P
For A = 1 To 255: SSDranreb = SSDranreb & String(TNb(A), A): Next A
End Function
 

Discussions similaires

Réponses
4
Affichages
654

Statistiques des forums

Discussions
312 595
Messages
2 090 102
Membres
104 377
dernier inscrit
renaudchristophe1971@gmai