Classement de mots

bonjour , j'ai realisé le code suivant qui permet de classer des mots par critere de longueur de caracteres

peut on faire plus court :

Sub class_par_long_mots()

t = Array("XDUIUOPJ", "JQSM", "DK", "QSD", "G", "FGM", "NQGFR")
'classement par longueur de caractères:
For i = 0 To UBound(t)
 Z = Z & " " & Len(t(i))
Next
MsgBox Z
s = Split(LTrim(Z), " ") 'puis classement des éléments du nouveau tableau de valeurs:
For i = 0 To UBound(t) - 1
 For j = i + 1 To UBound(t)
  If Val(s(i)) > Val(s(j)) Then
   a = s(i)
   b = s(j)
   s(i) = b
   s(j) = a
  End If
 Next
Next
w = ""
For i = 0 To UBound(s)
 For j = 0 To UBound(t)
   If Len(t(j)) = Val(s(i)) Then
    If InStr(w, t(j)) = 0 Then
      w = w & " " & t(j)
    End If
   End If
 Next
Next

MsgBox w  ' retourne les  mots classés

merci a vous

Bonsoir,

voici une proposition parmi tant d'autres :

Sub class_par_long_mots()
t = Array("XDUIUOPJ", "JQSM", "DK", "QSD", "G", "FGM", "NQGFR")
For i = UBound(t) - 1 To 0 Step -1
    For j = UBound(t) To 0 Step -1
        If Len(t(j)) < Len(t(i)) Then
            temp = t(j)
            t(j) = t(i)
            t(i) = temp
        End If
    Next j
Next i
Range("a1").Resize(UBound(t) + 1) = Application.Transpose(t)
End Sub

On part du dernier élément (index J) que l'on compare avec l'élément d'avant (index I) et s'il est plus petit alors on inverse les deux éléments testés en passant par une variable de stockage temporaire.

Ensuite on affiche le résultat en colonne A.

@ bientôt

LouReeD

Rechercher des sujets similaires à "classement mots"