Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Trier un fichier txt

3 réponses
Avatar
---DGI972---
Bonjour,

Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant
j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au
beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci

3 réponses

Avatar
Jean
Bonjour,

Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant
j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au
beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci


Vous mettez vos lignes dans une variable tableau (à l'aide de FSO) puis
pour trier vous avez :

-la traduction de l'algo Quick Sort (faites une recherche sur le site
de Clarence Washington http://cwashington.netreach.net ou sur ce groupe
dans le moteur de recherche news de Google)

-la possibilité d'utiliser ADO (faites une recherche sur le site de
Clarence Washington ou sur le site MS Script Center ou sur ce groupe
dans le moteur de recherche news de Google)

-passer à JScript et utiliser sa méthode sort :
http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthsort.asp

Amicalement,

--
Jean - JMST
Belgium

Avatar
Stéphane [MS]
Bonjour,

à adapter :
=================== 'Tri du tableau arrProcesses
For I = LBound(arrProcesses) to UBound(arrProcesses)
For J = I+1 to UBound(arrProcesses)
' tri décroissant
If arrProcesses(i) < arrProcesses(j) Then
intTampon = arrProcesses(i)
arrProcesses(i) = arrProcesses(j)
arrProcesses(j)=intTampon
End If
Next
Next
=====================
Cdlt
Stéphane

"---DGI972---" <gilles.dermigny@*No Spam*laposte.net> a écrit dans le
message de news:
Bonjour,

Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant
j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie
au
beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci




Avatar
jbongran
---DGI972--- wrote:
Bonjour,

Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour
l'instant j'utilise SORT en ligne de commande mais je ne trouve pas
cela très jolie au beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci


Juste parce que ça me fait plaisir ;-)

Function MakeRecordset(strFile)
Dim startTime
Dim rstFiles
Const ForReading = 1
Const ForWriting = 2
Const adVarChar = 200
Const adInteger = 3
Const adDate = 7
startTime = Now()
WScript.Echo "Création d'un recordset"
Set rstFiles = CreateObject("ADODB.Recordset")
rstFiles.Fields.Append "idx", adInteger
rstFiles.Fields.Append "line", adVarChar, 2048
rstFiles.Open
Dim fso, MyFile, i, j, retstring
i = 0
j = 0
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(strFile) Then
WScript.Echo "Ouverture du fichier " & strFile
Set MyFile = fso.OpenTextFile(strFile, ForReading, False)
Do While MyFile.AtEndOfStream <> True
retstring = Trim(MyFile.ReadLine)
If Len(retstring) > 0 Then
i = i +1
rstFiles.AddNew
rstFiles.Fields("idx").Value = i
rstFiles.Fields("line").Value = retstring
If (i Mod 1000) = 0 Then
WScript.Echo i & " enregistrements créés à présent"
End If
End If
Loop
MyFile.Close
WScript.Echo "Fin de lecture du fichier " & strFile
WScript.Echo "Tri des enregistrements"
rstFiles.Sort = "line ASC"
rstFiles.MoveFirst
Set MyFile = fso.OpenTextFile(strFile & ".bak", ForWriting, True)
Do While Not rstFiles.EOF
MyFile.WriteLine rstFiles.Fields("line").Value
j = j +1
If (j Mod 1000) = 0 Then
WScript.Echo j & " lignes écrites à présent"
End If
rstFiles.MoveNext
Loop
rstFiles.Close
Set rstFiles = Nothing
MyFile.Close
Set MyFile = Nothing
If i = j Then
fso.CopyFile strFile & ".bak", strFile, True
fso.DeleteFile strFile & ".bak"
WScript.Echo VbCrLf & String(20, "-")
WScript.Echo "Fichier " & strFile & " enregistré"
WScript.Echo "Nombres de lignes triées: " & j
WScript.Echo "Temps du travail: " & DateDiff("s", startTime, Now()) &
"seconde(s)"
WScript.Echo String(20, "-") & VbCrLf
Else
WScript.Echo "Le nombre de lignes non vides dans le fichier source"
WScript.Echo "n'est pas égal au nombre d'enregistrements créés."
WScript.Echo "Le fichier source n'a pas été modifié."
End If
Else
WScript.Echo "Le fichier " & strFile & " est introuvable"
End If
WScript.Echo "Fin du travail"
WScript.Echo String(20, "-") & VbCrLf
End Function

Call MakeRecordset("c:testmon.Log")