Traitement fichier text en VB6

Fermé
viclaudel Messages postés 13 Date d'inscription dimanche 15 mars 2009 Statut Membre Dernière intervention 19 mars 2009 - 15 mars 2009 à 21:27
 Albert - 16 mars 2009 à 17:23
Bonjour, je suis débutant en VB, je dois traiter des fichiers rapport d'exploitation en fichier text.
Il faut grace un programme en VB6 que j'aille ouvrir, lire, extraire des valeurs, et les réécrire dans un nouveau fichier text sous forme de colonne.
Le fichier text que je dois lire contient à un moment une valeur je dois extraire les 1000 première valeur et les mettre en colonne dans le nouveau fichier. (des que la ligne commence avec AT je récupère la valeur entre parenthèse)
Je dois le faire 5 fois de suite pour obtenir 5 colonnes avec toutes les valeurs.
J'arrive à faire ma première colonne mais j'utlise le même principe pour les autre et rien ne s'affiche.

Voilà une partie du fichier que je dois lire :

[HEADER]
DATE = date #2009-03-04
STANDARD = 'PLCopen v0.1 1993'
SENDER = 'Schneider Electric Industries SAS PL7 PRO V4.5'
[APPLICATION]
NAME = 'STATION'
DATE = date #2009-02-26
VERSION = '0'
[DATA_UNIT]
DA_TYPE =
LOCATION =
NAME =
BODY =
VAR_GLOBAL
AT %MW1000 : WORD := (384);
AT %MW1001 : WORD := (384);
AT %MW1002 : WORD := (384);
AT %MW1003 : WORD := (384);
AT %MW1004 : WORD := (384);
AT %MW1005 : WORD := (384);
AT %MW1006 : WORD := (384);
AT %MW1007 : WORD := (383);
AT %MW1008 : WORD := (383);
AT %MW1009 : WORD := (383);
AT %MW1010 : WORD := (383);
AT %MW1011 : WORD := (383);
AT %MW1012 : WORD := (383);
AT %MW1013 : WORD := (383);
AT %MW1014 : WORD := (383);
AT %MW1015 : WORD := (383);
AT %MW1016 : WORD := (383);
AT %MW1017 : WORD := (383);
AT %MW1018 : WORD := (383);
AT %MW1019 : WORD := (383);
AT %MW1020 : WORD := (383);
AT %MW1021 : WORD := (383);
AT %MW1022 : WORD := (383);
AT %MW1023 : WORD := (383);


Voilà mon code quand je clique sur un bouton je le fais que pour 2 colonnes pour l'instant :

Private Sub Command1_Click()
Dim FSys, fs, Mypo, Mypo2, NbCar 'pour creation du fichier

Dim MonFich, ReadC 'indication du nom du fichier
Dim Msg 'message de réussite
Dim Name 'nom du nouveau fichier
Dim donnees
Dim i, j As Integer
Dim C, C2 As String
Dim t As Variant
Dim Montableau(0 To 2, 0 To 999) As String
Dim chaine

'on récupére les données inscritent par l'utilisateur
G_CheminFichier = TXT_Chemin_Fichier.Text
G_NomFichier = TXT_Nom_Fichier.Text
G_NomFichierText = TXT_Nom_Fichier_Texte.Text

'Lecture
If G_NomFichier <> "" Then

'ouverture du fichier source
Open G_CheminFichier + G_NomFichier For Input As #1


For i = 0 To 1999

Line Input #1, ReadC

'If Trim(ReadC) <> "" Then
'If Trim(ReadC) <> "" Then
'extraction de la valeur
If Left(ReadC, 2) = "AT" Then

Mypo = InStr(1, ReadC, "(")
Mypo2 = InStr(1, ReadC, ")")
NbCar = Mypo2 - Mypo
C = Mid(ReadC, Mypo + 1, NbCar - 1)
i = i + 1
'mise de la valeur dans un tableau en fonction du numéro de la ligne
If 0 < i <= 999 Then
Montableau(0, 999) = Montableau(0, 999) & vbCrLf & C & ";"

Else
Montableau(1, 999) = Montableau(1, 999) & vbCrLf & C & ";"
End If

End If

'mise de valeur dans un chaine
chaine = CStr(Montableau(0, 999)) & CStr(Montableau(1, 999))

Next i




Close #1
End If
Text1.Text = chaine
'ecriture dans le nouveau fichier
Set FSys = CreateObject("Scripting.FileSystemObject")
Set MonFich = FSys.createtextfile("D:\Name.txt")
With MonFich
.writeline ("Num pts;U Alt; I Alt; % PID; U Exi;I Ext")
.writeline chaine
End With


et voilà ce que j'obtiens dans mon nouveau fichier sans ma 2ème colonne :

Num pts;U Alt; I Alt; % PID; U Exi;I Ext

384;
384;
384;
384;
384;
384;
384;
383;
383;
383;
383;
383;
383;
383;
383;
383;
383;
383;
383;
383;
383;
383;
383;


Si quelqu'un peu m'aider ou me donner des idées, ça serai sympa.

@+
A voir également:

2 réponses

Je n'ai pas tout compris!

Quelles valeurs veux tu mettre dans tes autres colonnes?

Tel que c'est fait, tu auras une premiere colonne contenant la fin de ligne (ex : "384;") pour les 999 premières lignes et une deuxième colonne pour les lignes suivantes !! Rien n'est prévu pour 5 colonnes.

Par ailleurs "If 0 < i <= 999 " : le test est toujours vrai et le tableau montableau(1,999) n'est jamais rempli
0
Le Problème est sans doute résolu ?
0