viclaudel
Messages postés13Date d'inscriptionStatutMembreDernière intervention
-
Albert -
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 :
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