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
| Option Explicit
' Avec référence microsoft DAO 3.6 Object Library
Dim Donneestxt As DAO.Database
Dim Appli As Object
Dim Creation As Object
Dim Enregistrement As String
Dim Chemin As String
Dim NomFichier As String
Dim TexteRequete As String
Dim Requete As Recordset
Sub test()
Chemin = "C:\......\" ' a adapter
NomFichier = "LenomDuFichier.txt" ' a adapter
Set Donneestxt = DAO.OpenDatabase(Chemin, False, False, "Text;Database=" & Chemin)
Set Appli = CreateObject("Scripting.FileSystemObject")
'Création du schema.ini pour déclaration du séparateur et des entêtes colonne
Set Creation = Appli.CreateTextFile(Chemin & "schema.ini", True)
Creation.Write "[" & NomFichier & "]" & vbCrLf
Creation.Write "Format=Delimited(;)" & vbCrLf
Creation.Write "ColNameHeader = True"
Creation.Write ""
Creation.Write "[TempA]" & vbCrLf
Creation.Write "Format=Delimited(;)" & vbCrLf
Creation.Write "ColNameHeader = True"
Creation.Close
Set Creation = Nothing
'Création du fichier Temporaire
Set Creation = Appli.CreateTextFile(Chemin & "TempA.txt", True)
Creation.Write "P;B;M;g;X" & vbCrLf
TexteRequete = "SELECT P, B, M, g " & _
"FROM [" & NomFichier & "]"
Set Requete = Donneestxt.OpenRecordset(TexteRequete, DAO.dbOpenSnapshot)
Do While Not (Requete.EOF)
If Requete.Fields(0).Value > 0 Then ' on ne prendre pas les lignes commencant par 0
Enregistrement = Requete.Fields(0).Value
Enregistrement = Enregistrement & ";" & Requete.Fields(1).Value
Enregistrement = Enregistrement & ";" & Requete.Fields(2).Value
Enregistrement = Enregistrement & ";" & Requete.Fields(3).Value
Enregistrement = Enregistrement & ";" & CLng(Requete.Fields(3).Value) - CLng(Requete.Fields(2).Value) 'Création de la différence Des colonne g et M(a adapter)
Creation.Write Enregistrement & vbCrLf
End If
Requete.MoveNext
Loop
Requete.Close
Open Chemin & "FichierligneAutre.txt" For Input As #1 ' on lit le fichier des nouvelles lignes (Nom du fichier a adapter)
Do While Not EOF(1)
Input #1, Enregistrement
Creation.Write Enregistrement & vbCrLf ' On les écris dans le fichier TempA
Loop
Close #1
Set Creation = Appli.CreateTextFile(Chemin & NomFichier, True) ' On créer le fichier définitif
'On requête dans le fichier TempA pour effectuer le tri
TexteRequete = "SELECT P, B, M, g, X " & _
"FROM [TempA.txt] ORDER BY P, B, M, g, X"
Set Requete = Donneestxt.OpenRecordset(TexteRequete, DAO.dbOpenSnapshot)
Do While Not (Requete.EOF)
Enregistrement = Requete.Fields(0).Value
Enregistrement = Enregistrement & ";" & Requete.Fields(1).Value
Enregistrement = Enregistrement & ";" & Requete.Fields(2).Value
Enregistrement = Enregistrement & ";" & Requete.Fields(3).Value
Creation.Write Enregistrement & vbCrLf
Requete.MoveNext
Loop
Creation.Close
Set Creation = Nothing
Requete.Close
Set Requete = Nothing
Kill Chemin & "TempA.txt"
Msgbox "Terminé"
End Sub |
Partager