cs_John7
Messages postés47Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention12 janvier 2008
-
8 mars 2006 à 18:22
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDerniè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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 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.
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". )<
cs_John7
Messages postés47Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention12 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!!!!
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 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 :
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". )<
cs_John7
Messages postés47Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention12 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 !!!
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 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". )<
cs_John7
Messages postés47Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention12 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................