Option Explicit Const MyFile = "d:\Test.txt" Const MySortedFile = "d:\Test_trié.txt" Dim objFso, objTextFile Dim arrLines Dim bpermute, cprovisoire, i, j Set objFso = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFso.OpenTextFile(MyFile, 1) arrLines = Split(objTextFile.ReadAll,vbCrLf) objTextFile.Close bpermute = True Do While bpermute = True bpermute = False For i = UBound(arrLines) To 1 Step -1 If Len(arrLines(i)) > 1 Then For j = 0 To i - 1 If Len(arrLines(j)) > 1 Then If Split(arrLines(j), Chr(44))(0) > _ Split(arrLines(j + 1), Chr(44))(0) Then cprovisoire = arrLines(j) arrLines(j) = arrLines(j + 1) arrLines(j + 1) = cprovisoire bpermute = True End If End If Next End If Next Loop 'Write File Set objTextFile = objFso.CreateTextFile(MySortedFile, 2) For i = 0 To UBound(arrLines) objTextFile.WriteLine arrLines(i) Next objTextFile.Close Set objTextFile = Nothing Set objFso = Nothing
For i = UBound(arrLines) To 1 Step -1
bpermute = True 'Il faut au moins parcourir une fois Do While bpermute = True 'On tourne tant que l'on bouge des valeurs bpermute = False 'Si on est ici c qu'il faut réinitialiser bpermute For t = 1 To imax - 1 'On tourne autant de fois qu'il y a de fiches '(-1 vu qu'on compare 2 valeurs) If ligne(t) < ligne(t + 1) Then 'Si on a trouvé deux valeurs mal rangées '(autrement dit une valeur qui se 'trouve plus bas dans le tableau mais qui 'est plus levée... cprovisoire = ligne(t) 'On inverse les deux chaines ligne(t) = ligne(t + 1) 'bis ligne(t + 1) = cprovisoire 'bis bpermute = True End If Next Loop
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question