Texte

Résolu
cs_John7 Messages postés 47 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 12 janvier 2008 - 8 mars 2006 à 18:22
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 10 mars 2006 à 10:11
bonjour à tous,

Voilà mon problème: J'ai un fichier texte et je voudrais lire ligne par ligne et chaque ligne la découper en N caractères pour pouvoir mettre certaine données dans une DB.
Bien sur je pourrais mettre un bouton qui change de ligne à chaque fois, mais sur un fichier de 16 mo, j'ai pas fini !!!
Si vous avez une bonne idée. Merci d'avance.
john

12 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 mars 2006 à 19:05
J'ai pas très bien compris ton problème. Pourquoi tu veux un bouton pour passer à la ligne suivante ?
Lorsque tu as lu une ligne, le pointeur dans ton fichier est automatiquement positionné sur la ligne suivante, tu n'as pas besoin de changer de ligne, il te suffit de lire séquentiellement les lignes les unes après les autres. Tu peux faire ça dans une boucle par exemple :

Tant que pas fin du fichier
--> lecture de la ligne
--> traitement de la ligne lue
--> enregistrement des données
--> et on reboucle

<hr size="2" width="100%">
3
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
8 mars 2006 à 21:40
Salut,

Il faut combiner les deux codes de ScSami :



Dim varCheminDuFichier As String
Dim varCanal As Integer '0-512

varCheminDuFichier = "C:\...\...\fichier.ext"

varCanal = FreeFile

Open varCheminDuFichier For Input As varCanal
While Not(EOF(varCanal)
Line Input #varCanal, maVariableATraiter
Partie1 = Mid(maVariableATraiter, 1, 9)

Partie2 = Mid(maVariableATraiter, 10, 6)

Partie3 = Mid(maVariableATraiter, 16, 6)

Partie4 = Mid(maVariableATraiter, 22, 6)

Partie5 = Mid(maVariableATraiter, 28, 1)

Partie6 = Mid(maVariableATraiter, 29, 3)

Wend
Close varCanal



La méthode Line Input
passe automatiquement à la ligne suivante après avoir lu une ligne. Et
la boucle While te permet de faire çà jusqu'à la fin du fichier.




Manu
3
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
9 mars 2006 à 01:19
Heu... pas certain ça!

Moi, ce que j'ai compris c'est que finalement tu n'as plus besoin d'aide ! J'ai tout pigé ou j''me trompe !?!?!?

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )<
3
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
10 mars 2006 à 10:11
Pense à "accepter" également les réponses des personne qui t'on apportés une aide comme, en l'occurrence, Econ et Casy !

Enfin bon, moi, ce que j'en dis...

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )<
3

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

Posez votre question
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
8 mars 2006 à 19:16
En effet!!! Autrement dit, il faut un code du genre :

Dim varCheminDuFichier As String
Dim varCanal As Integer '0-512

varCheminDuFichier = "C:\...\...\fichier.ext"
varCanal = FreeFile

Open varCheminDuFichier As Input As varCanal
Do While Not(EOF(varCanal)
Line Input #varCanal, maVariableATraiter
'traitement de ta variable (ta ligne récupérée)
Loop
Close varCanal

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )<
0
cs_John7 Messages postés 47 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 12 janvier 2008
8 mars 2006 à 19:54
Bonsoir ScSami et merci pour cette réponse
Le plus gros problème c'est que dans chaque ligne, j'ai des données a récupérer qui ne sont pas identiques. Je m'explique:
Voiçi une ligne type: 201500000000000000000000000170BMAUTO COR_B39.9 2003043020030808075848
je dois couper cette ligne à partir du début en 9 puis 6 puis 6 puis1 puis 2 puis 3 chiffres et c'est à partir des 3 chiffres, suivant les chiffres, que je mets dans une DB ce qui suit !!! j'espere que ça va, c'est pas dur a comprendre mais à ecrire!!!!

john
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
8 mars 2006 à 20:36
Bon, je sais pas exactement comment tu veux faire exactement et comment ni même ce que tu veux mettre dans ta DB mais pour découper une String, c'est pas compliqué : il faut utiliser Mid !
Mid(String, Début, Longueur)
P.ex. : Mid("ABCD", 2, 3) >> "BCD"

Remplace ceci :

'traitement de ta variable (ta ligne récupérée)
Par un truc du genre :

Partie1 = Mid(maVariableATraiter, 1, 9)
Partie2
= Mid(maVariableATraiter, 10, 6)

Partie3
= Mid(maVariableATraiter, 16, 6)

Partie4
= Mid(maVariableATraiter, 22, 6)

Partie5
= Mid(maVariableATraiter, 28, 1)

Partie6
= Mid(maVariableATraiter, 29, 3)

Ensuite, c'est à toi de voir quoi faire de toutes ces parties et comment les traiter !!!
Mais ça, c'est un autre problème (qui mériterait un autre post sans doute!)...

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )<
0
cs_John7 Messages postés 47 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 12 janvier 2008
8 mars 2006 à 21:27
Mercci ScSami mais comment faire pour passer à une autre ligne automatiquement
A+

john
0
cs_John7 Messages postés 47 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 12 janvier 2008
8 mars 2006 à 21:55
Bonsoir, ça j'avais bien compris, mais quand je veux afficher 3 ou 4 parties dans des textbox et passer à une autre ligne pour en lire d'autres, je repasse par ce sub mais ça ne marche pas !!!

john
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
8 mars 2006 à 22:12
Ce que tu n'as pas compris c'est que le code que je t'ai donné parcours AUTOMATIQUEMENT (via la boucle Do/Loop [ou While/Wend dans le code de Econs] ) TOUTES LES LIGNES de ton fichier, UNE PAR UNE en les découpant à chaque fois.

Tu n'es pas clair !!! Déjà, au début, y'avait pas de TextBox mais tu parlais de DB... Alors ma question est simple : qu'est-ce que tu veux faire ???? Soit un peu plus clair s'il te plait.

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )<
0
cs_John7 Messages postés 47 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 12 janvier 2008
8 mars 2006 à 22:33
Re,
c'est vrai que c'est plus dur par écrit, mais je vais essayer.
Je reçois un fichier txt avec des lignes presque semblable du genre :
201500000000000000000000000170BMAUTO COR_B39.9 2003043020030808075848
201500000305422426498A00020 1000 000000B 112 1+000000000014151+000000000011040+000000000000000+000000000000000+040 B 0400
je dois enlever 24 caractères puis suivant les 3 d'aprés (000 ou 001 ou 003 ou 005 etc...), je mets dans une DB tout ce qui suit au bon endroit.Pour la base , je sais!!! Il etait temps me direz-vous !!!!
Je voulais juste tester avec des textbox pour voir ce que ça faisait.
J'espere avoir été assez clair merci................

john
0
cs_John7 Messages postés 47 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 12 janvier 2008
9 mars 2006 à 07:52
Bonjour,
Merci à vous deux pour votre aide.Je vais me débrouiller avec tout ça......A+

john
0
Rejoignez-nous