Help: Très Facile Pour vous - Lecture/Ecriture d'un fichier TXT - INPUT / OUTPUT

Résolu
cs_abracadabra Messages postés 15 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 14 novembre 2005 - 29 sept. 2005 à 18:36
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 30 sept. 2005 à 15:14
Salut tout le monde,



J'espère que vous allez tous bien..


j'attaque la lecture des fichiers txt via VB et
j'ai un exercice qui me pose un mega probleme. J'espere que vous pourriez
m'aider, je vais essayer de vous resumer l'exercice :


J'ai un 1er fichier Input structuré de la façon suivante et avec les champs
suivants:


:A1:UNIQUE (Doit etre présent )

:C1:UNIQUE (Doit etre présent )

:Z3:UNIQUE (Doit etre présent )

:C1:MULTIPLE (Doit etre présent au moins une fois)

:T1:MULTIPLE (peut ne pas être présent)

:F1:UNIQUE (Doit etre présent )





Exemple:


:A1:Ingrid

:C1:Neerlandaise

:Z3:28ans

:C1:200

:T1:Fac

:C1:300

:T1:Hotel

:F1:Fin

:A1:Denis

:C1:Canadienne

:Z3:28ans

:C1:400

:T1:bILLET d'avion

:C1:150

:F1:Fin


le code doit transformer ces données dans un autre fichier output de la
façon suivante:


Ingird;Neerlandaise;28ans;200;Fac;Fin

Ingird;Neerlandaise;28ans;300;Hotel;Fin

Denis;Canadienne;28ans;400;bILLET d'avion;Fin

Denis;Canadienne;28ans;150;;Fin





(attention à la dernière ligne comme il n’y a pas eu de T1 il l’a laissé vide ;; )


j'ai tout essayé et ça marche pas je vous serai tres reconnaissante si
vous pouvez m'aider à écrire ce code.





Merci d'avance et Kisses pour toutle monde


Ingrid la néerlandaise

9 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
30 sept. 2005 à 15:14
Ayé j'ai le projet que tu voulais, je te l'envoi sur ton email Hotmail, c hot hot hot !!!

C'est tirer par les cheuveux mais ça marche comme tu le voulais et d'une force mais d'une force

A là j'ai assuré, trop bien bon j'arrête de me lancer des roses car ça pique.


Chris...
Web : Firstruner
3
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
29 sept. 2005 à 21:00
Salut Abracadabra, et ton soucis sans va :)
Bon j'arrête ma déconne, je pense qu'il faudrait recupérer les infos de tes C1, A1, etc... et les stockés dans une variable tableau style : MesDatas()
Chaque ligne, une fois tout stocké dedant, il te sera super facile d'en faire ce que tu veux ;) je vais essayer de te fair eun script.


Chris...
Web : Firstruner
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
29 sept. 2005 à 21:23
Bien me revoici, alors je t'ai concocté un début de code :

Open "c:\toto.txt" For Input As #1 'Ouverture du fichier pour lecture et de numéro #1
olddata = Input$(LOF(1), #1) 'Stockage du contenu
Close #1 'Fermeture du fichier

Dim NewDatas() As String 'Création d'un tableau de string
NewDatas() = Split(olddata, vbCr) 'On scalpe, découpe comme tu veux, enfin on coupe à chaque fois que l'on trouve un retour à la ligne (VbCr) chaque ligne sera mise dans un tableau

Ensuite il te suffit de faire varier l'index de NewDatas(index) pour obtenir tes infos

Chris...
Web : Firstruner
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
29 sept. 2005 à 21:57
Tiens voici le code complet qui te permet de passer de l'un à l'autre, il y a surement des amélioration à faire mais c'est un début ;)

Dim OldData 'Création de la variable qui contiendra le contenu du fichier source
Open "c:\toto.txt" For Input As #1 'Ouverture du fichier source
OldData = Input$(LOF(1), #1) 'Stockage du contenu dans la variable
Close #1 'Fermeture du fichier source
Dim NewDatas() As String 'Déclaration d'un tableau de String (texte) pour stocker le contenu du fichier trier
NewDatas() = Split(OldData, vbCr) 'Triage du fichier dans le tableau : 1 info par ligne du tableau (VbCr)

Dim LineInfo As String 'Déclaration d'une variable servant à écrire le texte finalisé
Open "c:\NewToto.txt" For Output As #1 'Ouverture du fichier destination en mode écriture
For Each Index In NewDatas() 'Pour chaque ligne du tableau NewDatas() (début de la boucle)
Dim TypeInfo As String 'Déclaration d'une variable Texte pour stocker le type d'info que l'on récolte à parir de la ligne du tableau
Dim PStart As Integer 'Déclaration d'un Entier qui nous servira plus tard dans le repérage des Type d'info et des Données du type
PStart = InStr(Index, ":") + 1 'Recherche de la position du 1er ':' à partir de la ligne du tableau en cours
TypeInfo = Mid(Index, PStart, 2) 'Recolte du Type d'info concerné
PStart = InStr(PStart, Index, ":") + 1 'Recherche du 2nd ':' à partir du 1er ':'
If Len(LineInfo) = 0 Then 'Test si LineInfo est vide (c'est à dire si c'est une nouvelle ligne à écrire
LineInfo = Mid(Index, PStart) 'Si oui alors stockage direct de l'info dans la variable
Else
LineInfo = LineInfo & ";" & Mid(Index, PStart) 'Sinon stockage de l'info à la suite de celle déjà contenu
End If 'Fin de la condition
If TypeInfo = "F1" Then 'Test si on arrive à la fin d'un profil ;)
Print #1, LineInfo 'Si oui alors on écrit la ligne dans le fichier
LineInfo = Empty 'On efface le contenu de LineInfo ce qui nous permettra de savoir que l'on débute une nouvelle ligne
End If 'Fin de la condition
Next 'On passe à la ligne suivante dans le tableau
Close #1 'Le tableau à été scruter, trier, etc... on ferme le fichier car c'est fini


Chris...
Web : Firstruner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
29 sept. 2005 à 21:59
Amélioration il faut remplacer :

Dim OldData 'Création de la variable qui contiendra le contenu du fichier source
Open "c:\toto.txt" For Input As #1 'Ouverture du fichier source
OldData = Input$(LOF(1), #1) 'Stockage du contenu dans la variable
Close #1 'Fermeture du fichier source
Dim NewDatas() As String 'Déclaration d'un tableau de String (texte) pour stocker le contenu du fichier trier
NewDatas() = Split(OldData, vbCr)

par :

Dim NewDatas() As String
Open "c:\toto.txt" For Input As #1
NewDatas() = Split(Input$(LOF(1), #1), vbCr)
Close #1

rudment plus court !


Chris...
Web : Firstruner
0
cs_abracadabra Messages postés 15 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 14 novembre 2005
29 sept. 2005 à 22:54
Chris chérie, :)

t adorable....je vais essayer de comprendre le code, l'executer....et je te dirai si ça marche ou non...

merci
bisous
Ingrid bauer
ingridnlfr@hotmail.com
0
cs_abracadabra Messages postés 15 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 14 novembre 2005
29 sept. 2005 à 23:12
Chéri,


Ton code ne marche pas parfaitement. En fait, il affiche le résultat suivant:


Ingrid;Neerlandaise;28ans;200;Fac;300;Hotel;Fin
Denis;Canadienne;28ans;400;bILLET d'avion;150;Fin

Alors que dans mon exemple:

je dois avoir :
Ingird;Neerlandaise;28ans;200;Fac;Fin
Ingird;Neerlandaise;28ans;300;Hotel;Fin

Denis;Canadienne;28ans;400;bILLET d'avion;Fin

Denis;Canadienne;28ans;150;;Fin

je vais essayer de le corriger , je compte sur toi si ca ne marche pas.

Et chris ne te moque pas de moi....lol..., je suis encore debutante en VB :))))))...
Merci
Ingird
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
29 sept. 2005 à 23:27
ok, je regarde de mon côté aussi, je ne me moquerais pas de toi car il faut bien se lancer un jour


Chris...
Web : Firstruner
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
30 sept. 2005 à 12:37
Salut, j'ai un peu avancer ce matin sur ton projet t ai obtenu ceci :

Sub WriteInFile(Prof() As String, F As String, FNum As Integer) 'Fonction de sauvegarde du profil
Print #FNum, Prof(0) & ";" & Prof(1) & ";" & Prof(2) & ";" & Prof(3) & ";" & F 'Ecriture dans le fichier
End Sub


Private Sub Form_Load()
Dim NewDatas() As String 'Déclaration d'un tableau de String (texte) pour stocker le contenu du fichier trier
Open "toto.txt" For Input As #1 'Ouverture du fichier source
NewDatas() = Split(Input$(LOF(1), #1), vbCr) 'Stockage du contenu dans la variable avec découpage
Close #1 'Fermeture du fichier source


Dim Profil(3) As String 'Création d'un profil
Open "NewToto.txt" For Output As #1 'Ouverture du fichier destination en mode écriture
For Each Index In NewDatas() 'Pour chaque ligne du tableau NewDatas() (début de la boucle)
Dim Info As String 'Déclaration d'une variable Texte pour stocker le type d'info que l'on récolte à parir de la ligne du tableau
Dim PType As Integer, PInfo As Integer 'Déclaration d'un Entier qui nous servira plus tard dans le repérage des Type d'info et des Données du type
PType = InStr(Index, ":") + 1 'Recherche de la position du 1er ':' à partir de la ligne du tableau en cours
PInfo = InStr(PType, Index, ":") + 1 'Recherche du 2nd ':' à partir du 1er ':'
Info = Mid(Index, PInfo)


Select Case Mid(Index, PType, 2) 'Recolte du Type d'info concerné
Case "A1"
Profil(0) = Info
Case "C1"
Profil(1) = Info
Case "Z3"
Profil(2) = Info
Case "T1"
Profil(3) = Info
Case "F1"
WriteInFile Profil(), Mid(Index, PInfo), 1
End Select
Next 'On passe à la ligne suivante dans le tableau
Close #1 'Le tableau à été scruter, trier, etc... on ferme le fichier car c'est fini
End Sub

Il faut que je fasse maintenant la gestion de plusieurs lignes mais cela devrait être fait assez rapidement.


Chris...
Web : Firstruner
0
Rejoignez-nous