Salut
2 fonctions pour trier des mots/phrases.
Si vous n'avez à trier qu'une variable tableau, seule la fonction TrierTbl vous est utile.
Si vous voulez trier une variable simple il vous faut la fonction Trier mais aussi la fonction TrierTbl.
La fonction pour une variable tableauLa fonction pour une variable simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Function TrierTbl(TblDonn) Dim Cpt1, Cpt2, CountTbl Dim MotIdxH, MotIdxB Dim MeTbl On Error Resume Next If UBound(TblDonn) = 0 Then TrierTbl = TblDonn: Exit Function If Err Then TrierTbl = vbEmpty : Exit Function MeTbl = TblDonn CountTbl = UBound(MeTbl) For Cpt1 = 0 To CountTbl For Cpt2 = CountTbl To 1 Step -1 MotIdxB = MeTbl(Cpt2 - 1) MotIdxH = MeTbl(Cpt2) If UCase(MotIdxB) > UCase(MotIdxH) Then MeTbl(Cpt2) = MotIdxB MeTbl(Cpt2 - 1) = MotIdxH End If Next Next TrierTbl = MeTbl End FunctionLe code de démonstration avec ces commentaires
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function Trier(Donn, InSeparateur, OutSeparateur) Dim Tableau If Donn = "" Then Trier = "": Exit Function Tableau = Split(Donn, InSeparateur) Tableau = TrierTbl(Tableau) If UBound(Tableau) = 0 Then Trier = Donn: Exit Function Trier = Join(Tableau, OutSeparateur) 'retour du tableau trié End FunctionCes fonctions ne sont pas d'une très grande rapidité, pour utilisation dans un programme écrit en VBScript cela n'est pas des plus pénalisant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 '********************************************** partie principale ****************************************** Dim MsG, VarDemo, MeDonn ' variables utiles à la démo 'Initialisation pour la démo MeDonn = "premier,deuxième,troisième,quatrième,cinquième,Sixième,septième,huitième,neuvième,Dixième" '------------------------ Exemples avec une variable simple ---------------------- MsG = "Variable contenant 10 éléments:" & vbNewLine & vbNewLine VarDemo = MeDonn MsgBox MsG & Trier(VarDemo, ",",vbNewLine), vbInformation, "Tri variable simple" ' ............................................ MsG = "Variable ne contenant qu'un élément:" & vbNewLine & vbNewLine VarDemo = "premier" MsgBox MsG & Trier(VarDemo, ",",chr(44)), vbInformation, "Tri variable simple" ' ............................................ MsG = "Variable ne contenant aucun élément" & vbNewLine & vbNewLine VarDemo = "" MsgBox MsG & Trier(VarDemo, ",",chr(44)), vbInformation, "Tri variable simple" '------------------------ Exemples avec une variable tableau ----------------------------------------------- Dim VarTbl VarTbl = Split(MeDonn, ",") 'création d'un tableau de données provenant de la variable définit plus haut MsG = "Variable tableau valide contenant des éléments:" & vbNewLine & vbNewLine VarTbl = TrierTbl(VarTbl) ' tri du tableau VarDemo = Join(VarTbl, vbNewLine) 'compilation du tableau dans une variable simple pour permettre l'affichage MsgBox MsG & VarDemo, vbInformation, "Tri tableau" ' ............................................ MsG = "Variable tableau valide ne contenant qu'un élément:" & vbNewLine & vbNewLine Erase VarTbl: Redim VarTbl(1): VarTbl(0)="premier" VarTbl = TrierTbl(VarTbl) ' tri du tableau VarDemo = Join(VarTbl, vbNewLine) 'compilation du tableau dans une variable simple pour permettre l'affichage MsgBox MsG & VarDemo, vbInformation, "Tri tableau" ' ............................................ MsG = "Variable tableau non valide:" & vbNewLine & vbNewLine Erase VarTbl VarTbl = TrierTbl(VarTbl) ' tri du tableau VarDemo = Join(VarTbl, vbNewLine) 'compilation du tableau dans une variable simple pour permettre l'affichage MsgBox MsG & VarDemo, vbInformation, "Tri tableau" '********************************************* Fin partie principale *************************************** '//////////////////////////////////// les fonctions \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Function Trier(Donn, InSeparateur, OutSeparateur) 'Donn = données soumis au tri 'InSeparateur = caractère séparateur des données soumis pour le tri 'OutSeparateur = caractère séparateur souhaité en retour du tri Dim Tableau 'variable vide, donc pas de tri à faire If Donn = "" Then Trier = "": Exit Function 'Création d'un tableau à l'aide du séparateur InSeparateur Tableau = Split(Donn, InSeparateur) 'Utilise la fonction de tri effectif Tableau = TrierTbl(Tableau) 'la variable soumis ne contenait qu'un élément If UBound(Tableau) = 0 Then Trier = Donn: Exit Function 'concaténer les éléments du tableau trié Trier = Join(Tableau, OutSeparateur) 'retour du tableau trié End Function '--------------------------------------------------------------- Function TrierTbl(TblDonn) Dim Cpt1, Cpt2, CountTbl Dim MotIdxH, MotIdxB Dim MeTbl 'utile si le tableau soumis n'est pas valide (aucun indice) UBound(TblDonn) provocant une erreur On Error Resume Next If UBound(TblDonn) = 0 Then TrierTbl = TblDonn: Exit Function If Err Then TrierTbl = vbEmpty : Exit Function ' cas du tableau soumis non valide MeTbl = TblDonn CountTbl = UBound(MeTbl)'nombre d'indices du tableau 'double boucle pour le tri effectif For Cpt1 = 0 To CountTbl For Cpt2 = CountTbl To 1 Step -1 MotIdxB = MeTbl(Cpt2 - 1) MotIdxH = MeTbl(Cpt2) If UCase(MotIdxB) > UCase(MotIdxH) Then MeTbl(Cpt2) = MotIdxB MeTbl(Cpt2 - 1) = MotIdxH End If Next Next TrierTbl = MeTbl 'retour du tableau trié End Function '//////////////////////////////////// Fin des fonctions \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Partager