De l'aide sur les fichiers !!!!!!!!!!!!!!

damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004 - 7 nov. 2003 à 09:25
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004 - 17 nov. 2003 à 11:40
bonjour a tous j'ai grand besoin d'aide je dois lire un fichier.pas dans leqeuel les enregistrement sont comme suit18802,76.000000,76.000000,1023.775085,890.522461,160.387726,170.145584,165.668015,165.400452,0.000000,0.000000,0.000000,0.000000,15.752380,15.531122,17.189699,48.473202,13.515612,15.635038,13.032000,42.182648,20.755943,22.037926,21.571247,64.257507,0.758930,0.704742,0.796876,0.754357,45.994678,48.795116,47.508289,47.432693,428.595276,428.543793,429.641876,428.926971,15.535685,15.287236,16.958506,47.781425,12.134617,14.267576,11.359599,37.761791,19.713102,20.910843,20.411551,60.901703,0.788085,0.731064,0.830825,0.784565,1.737940,1.997172,1.524937,1.753350,23.655716,25.997746,25.248322,24.967260,14.477929,14.096754,15.829987,44.404671,314.767151,288.890900,333.197723,312.285278,6.843556,5.920488,7.013465,6.583756,121.082344,108.202675,140.141769,123.142601,98.326935,87.867783,113.804459,1,0,0,0.000000,76.000000,76.000000,76.000000,0.000000,0.000000,0.000000,0.000000,3.000000,0.000000,100.000000,20.013157,5.000000,2.000000, xxx Je dois récupérer chaque valeur entre les virgules pour les ranger dans les champs d'une table je travaille sur une version 5.0 de VB ajouter des commentaires car plus ca va moins je comprend le VB!!!(fo dire que je n'est débuté qu'il y a un mois !!!) d'avance merci a tous ;)

15 réponses

cs_ludo24 Messages postés 37 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 12 juillet 2007
7 nov. 2003 à 10:02
tu n'as donc qu'une seule ligne dans ton fichier ??

connais -tu par hasard le nombre exact ou maximum de données??
0
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
7 nov. 2003 à 10:19
non le fichiers rajoute une ligne a chaque nouvelle coulee(tout les 45mn environ)je dois donc lire tout le fichier pour remplir la base puis enregistre ensuite les nouveau enregistrement( d'ailleurs s=i tu avis une idée la deszsus aussi nbre de ligne, comparaison...) par contre toute les lignes sont du meme type meme nombre de parametre
;)
0
cs_ludo24 Messages postés 37 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 12 juillet 2007
7 nov. 2003 à 10:32
ok si tu dis que chq ligne a le meme nb de parametres c'est qu'il s'agit d'un fichier Random.

Moi je vois 2 solutions.

la + simple:
tu recuperes chaque valeur de ta ligne séparé par des virgules:
ouvre ton fichier et recupere la ligne:
NfNew=FreeFile
Open "c:\fichier.pas" For Input As #NfNew
Line Input #NfNew, StringLine
Close #NfNew

utilise INSTR pour chercher les virgules dans StringLine
LEFT , RIGHT ou MID pour recuperer une partie de StringLine.

la + efficace:
tu recuperes chaque valeur de ta ligne séparé par des virgules et tu l'affectes à une variable:
ouvre ton fichier et recupere la ligne:
NfNew=FreeFile
Open "c:\fichier.pas" For Input As #NfNew
Input #NfNew, Val1,Val2,Val3...
Close #NfNew
J'ai jamais essayé cette méthode mais va voir ds l'aide à "Input #"
0
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
7 nov. 2003 à 10:50
le fichier est en fait un rapport d'automate il contient donc toujours le meme nbre de parametre par ligne tu crois qu'avec input je pe les affect ter directement au champ de ma table
;)
0

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

Posez votre question
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
7 nov. 2003 à 10:53
une precision importante pour automatiser la tache je me sert de when window activate dans excell car je dois egalement representer mes resultat sous forme de tableau et graphique il parait que c'est pas le meme VB?
;)
0
cs_ludo24 Messages postés 37 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 12 juillet 2007
7 nov. 2003 à 10:58
tu peux peut etre affecter directement les champs mais perso je le ferais en 2 etapes

- affecter les valeurs à des variables
- enregistrer les variables affectées dans la table

c plus propre.

le VBexcel n'est pas le meme mais tu devrais pouvoir te debrouiller.
0
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
7 nov. 2003 à 11:18
peut tu preciser pour la lecture du fichier
NfNew=FreeFile
Open "c:\fichier.pas" For Input As #NfNew
Line Input #NfNew, StringLine
Close #NfNew
est ce que ca récupére tout le contenu?
comment compter lenbre de ligne et reprendre depuis ce point par ex.
comment comparer la ligne obtenu a celle stockés dans la variable
dans ton deuxieme exemple
ouvre ton fichier et recupere la ligne:
NfNew=FreeFile
Open "c:\fichier.pas" For Input As #NfNew
Input #NfNew, Val1,Val2,Val3...
Close #NfNew
J'ai jamais essayé cette méthode mais va voir ds l'aide à "Input #"
Val1,Val2.... contienne la variable ou non ?
et encore merci de ton aide !!!!!
;)
0
cs_ludo24 Messages postés 37 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 12 juillet 2007
7 nov. 2003 à 12:22
qd tu ouvres un fichier de cette maniere
tu te retrouves sur la premiere ligne du fichier
et a chaque lois que tu fais un "Line Input" il se deplace d'une ligne:

NfNew=FreeFile
Open "c:\fichier.pas" For Input As #NfNew
Line Input #NfNew, Toto '=> Toto contient la 1ere ligne
Line Input #NfNew, Toto2 '=> Toto2 contient la 2eme ligne
Line Input #NfNew, Toto3 '=> Toto3 contient la 3eme ligne
Close #NfNew

Important: Tu peux aussi te servir de la boucle suivante pour lire toutes les lignes. EOF signifie "End Of File"
Do while not EOF(NfNew)
Line Input #NfNew, Toto
loop
Ceci te permet aussi d'atteindre la derniere ligne...

>"Val1,Val2.... contienne la variable ou non ?"
Si j'ai bien compris, Val1, Val2... contiennent tout simplement les data de ta ligne qui sont separees par des virgules, c'est a dire ds ton exemple:
val1=18802
val2=76.000000
val3=76.000000
...
0
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
7 nov. 2003 à 13:30
OK je commence à comprendre !!
encore quelque questions :
- pour eviter les doublons vo mieux comparer le champ Val1 et son équivalent dans la table ou comparer le nbre de lignes ou les chaines de caracteres
- comment comparer 2 string ou 2 parties de string
- Damned j'ai une erreur d'execution 62 l'entrée depasse la fin du fichier c quoi ??
;)
0
cs_ludo24 Messages postés 37 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 12 juillet 2007
7 nov. 2003 à 13:43
>- pour eviter les doublons vo mieux comparer le champ >Val1 et son équivalent dans la table ou comparer le nbre de >lignes ou les chaines de caracteres

c pas evident a dire sans avoir la totalité des infos. moi je ferais plutot par ligne mais fo etre certain ke ce soit fiable. Le mieux c de combiner les 2: ligne + valeur

>- comment comparer 2 string ou 2 parties de string
If string1 = string2 then???

>- Damned j'ai une erreur d'execution 62 l'entrée depasse la >fin du fichier c quoi ??
Sans doute as tu dépassé l'EOF du fichier que tu lisais
0
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
7 nov. 2003 à 14:02
voici mon code je devrais peut etre rajouter movefirst
NfNew = FreeFile
Open "C:\Documents and Settings\Administrateur\Bureau\Simeltic\Simelt\HeatReport.dat" For Input As #NfNew
Do While Not EOF(NfNew) ' Effectue la boucle jusqu'à la fin du fichier.
Input #NfNew, Val1, Val2, Val3, Val4, Val5, Val6, Val7, Val8, Val9, Val10, Val11, Val12, Val13, Val14, Val15, Val16, Val17, Val18, Val19, Val20, Val21, Val22, Val23, Val24, Val25, Val26, Val27, Val28, Val29, Val30, Val31, Val32, Val33, Val34, Val35, Val36, Val37, Val38, Val39, Val40, Val41, Val42, Val43, Val44, Val45, Val46, Val47, Val48, Val49, Val50, Val51, Val52, Val53, Val54, Val55, Val56, Val57, Val58, Val59, Val60, Val61, Val62, Val63, Val64, Val65, Val66, Val67, Val68, Val69, Val70, Val71, Val72, Val73, Val74, Val75, Val76, Val77, Val78, Val79, Val80, Val81, Val82, Val83, Val84, Val85, Val86, Val87, Val88, Val89, Val90, Val91, Val92, Val93, Val94, Val95, Val96, Val97, Val98, Val99, Val100, Val101, Val102, val103

Loop
Close #NfNew
;)
0
cs_ludo24 Messages postés 37 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 12 juillet 2007
7 nov. 2003 à 14:11
et ça marche ?
0
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
7 nov. 2003 à 15:36
non justement c'est la qu'est l'erreur 62

;)
0
cs_ludo24 Messages postés 37 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 12 juillet 2007
7 nov. 2003 à 15:52
essaye l'autre methode: avec Line Input: tu recuperes toute la ligne puis tu la dispatches dans un tableau de variables ou directement dans ta base

Tu utiliseras INSTR pour rechercher les virgules....
0
damdam1 Messages postés 33 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 février 2004
17 nov. 2003 à 11:40
aucune des méthodes essayer jusqu'ici en vb5 ne marche les utilisateurs ne voulant pas passez a vb 6 je ne vois plus de solutions et je crois que je vais abandonner le projet

;)
0
Rejoignez-nous