TRaitement d'un fichier TXT vers un fichier xls

TheDjinhn Messages postés 3 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 24 février 2011 - 17 mars 2006 à 14:31
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 18 mars 2006 à 02:47
Bonjour,

Je cherche un script ou des incides pour la réalisation de celui ci ?

J'ai un fichier TXT constitué de X lignes
dans chaque ligne, il y a Y colones avec des valeurs (numérique) séparé par des point vigule (;)
à chaque fin de ligne il y a un chiffre, qui peut être répété sur X lignes
mais lorsque X est différent de X +1, il doit pour chaque ensemble de colone donner la valeur minimal, la valeur moyene et la valeur max

Reprendre à la ligne X + 1 et comme ca jusqu'a la fin d u fichier

exemple de données

100;1362718720;210160;1,0145829605111127;0;61100032;23740,226692999528;0;13794,269931109089;0;0;0;1,1819269136807817;0,49496832202739022;0;676524032;43,363004767694868;0;1
0;1363144704;210160;0;0;61100032;6401,6449464724083;93,996332289780341;128,62655997548887;0;0;0;1,1819269136807817;0,17998848073723281;0;676532224;25,785999696019456;0;1
100;1356685312;210160;0;0;61124608;18580,465315718906;0;16678,100620891932;0;0;0;1,1812907166123778;1,1199283245872265;0;684617728;41,40999976001536;1;1
100;1354039296;210160;10,029483362471172;0;61124608;41394,686681927269;0;457157,89293814346;0;0;0;1,1809089983713354;3,1697971329834895;0;686772224;61,72119984321003;0;2
100;1354629120;210160;40,804057550488437;0;61165568;37351,636193350765;0;273878,82472071011;0;0;0;1,1809089983713354;5,5396454626903884;0;686116864;64,845999856009215;0;2
99,883381924198261;1354514432;210160;8,9483582165281081;0;61165568;22182,980018773182;0;22657,243004249169;0;0;0;1,1807817589576548;6,3795917061308076;0;686546944;51,174994800332783;0;2
100;1348841472;210160;0;0;61394944;17801,66389205103;0;45176,153532676013;0;0;0;1,3645154723127035;0,96493824395238703;0;705241088;53,127999808012284;2;2
99,963989917176804;1347756032;210160;8,1116098561383385;0;61399040;22001,727783543225;96,325367041642764;216095,31446998936;0;0;0;1,3645154723127035;2,6448307308332266;0;708632576;57,424594825931138;0;3
99,856596558317406;1343651840;210160;40,644570646194751;0;61415424;79686,159079343241;0;7052,3286726104743;0;0;0;1,3601893322475571;10,004359720977856;0;720232448;62,111804844489946;0;3

Merci pour tout l'aide que vous pourrait donner

2 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 21
17 mars 2006 à 19:56
Au final que souhaites-tu faire ?
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
18 mars 2006 à 02:47
Pas tout pigé, mais si c'est que ce soit en VB6 ou en VBA(6 et pas .Net), tu dois utiliser les fonctions VB de traitement de fichier à savoir : OPEN, CLOSE et autre FREEFILE, ...
Le plus simple est d'ouvrir ton fichier en mode Binary afin de mettre son intégralité dans une variable texte (type String) :

(NOTE IMPORTANTE : Code pondu de tête et donc, pas forcément opérationnel tel-quel. A toi de faire ce qu'il faut!)

Dim varTextFichier As String
Dim varCanal As Integer '0-511
...
varCanal = FreeFile
'Extraction de ton fichier dans une variable
Open "C:\chemin\ton fichier.ext" For Binary As varCanal
varTextFichier = Space(LOF(varcanal)) 'Redimensionne la variable à la taille du fichier (taille exprimé en octets puisqu'en mode Binary)
'Lit tout le contenu du fichier et le met dans la variable (varTexteFichier)
Get #varCanal, 1, varTextFichier
Close varCanal

Ensuite, il te suffit de travailler sur ta variable texte via les instructions du type Do/Loop (pour la boucle), Mid (pour extraire du texte), Len (pour mesurer la taille du texte), Replace (pour remplacer du texte), InStr, ...
Fonctions de traitement de texte classique quoi!

Pourquoi traiter ta chaîne ? Tout simplement parce que sous Excel tu peux importer des fichiers du type CSV qui séparent les données par des points-virgules (ou autre mais évite comme laa peste la virgule [ou alors c'est l'inverse... merde, j'me souvient plus... fait un test : c'est soit la virgule par défaut, soit c'est la virgule...).
Les CSV sont de simples fichiers texte donc. Chaque ligne du fichier donnera une ligne dans Excel et chaque donnée séparée (par ; ou , donc) se mettra dans une colonne.

Donc, a toi de voir le traitement à faire.

Ensuite, il faut enregistrer ta variable dans le même fichier (enfin, fait quand même des copies de sécurité parce que, tu verras, y'a souvent des blèmes).
Et ce, soit via un Open en mode Input à l'intérieur même de ta routine (DO/LOOP) de traitement, soit après (je te déconseille cette solution... le faire après nécéssite d'insérer des retours chariots dans ta variable texte...)

Pi voilà.

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