maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010
-
10 mars 2007 à 19:34
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
12 mars 2007 à 12:48
Bonjour,
Je suis à la recherche du morceau de code qui permet de :
1) Lire un gros fichier (+5mo)
2) Pouvoir appliquer le contenu du fichier dans la mémoire tampon
3) Pouvoir mettre en début de chaque ligne du gros fichier un préfixe
4) Pouvoir y appliquer des replace
j'utilise pour le moment un script comme sa mais vu que je connais pas trop fso je bug :)
Option Explicit
Dim fso As FileSystemObject
Private Sub Form_Load()
Set fso = New FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine ("This is a test.")
MyFile.Close
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 mars 2007 à 19:44
Bonsoir,
Si l'on voit bien que tu veux écrire dans un fichier texte, on ne vois par contre pas quel type de fichier (de 5 MO) tu souhaites lire ...
Est-ce également un fichier texte ou autre chose ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 mars 2007 à 20:08
S'il s'agit bien d'un fichier texte, d'une part, et que d'autre part il est si volumineux, ilo ne conviendra pas que tu le lises d'un seul coup
Ouvre le (Open For Input) et lis-le ligne par ligne (Line Input)
Les exemples et sources sint sur ce thème récurrent, très nombreux sur ce forum
Si le fichier est si grand, il est conseollé d'écrir dans le nouveau fichier (Open for Append et Print ) au fur et à mesure de la lecture d'une ligne par Line Input.
A chaque lecture de ligne, utilise un Split sur les espaces (nombreux exemples également présents pour l'utilisation de split) et envoie dans le nouveau fichier (par Print) chacun des éléments du tableau obtenu par ton split
et ainsi de suite, jusqu'à la dernière ligne du 1er fichier.
N'oublie pas de fermer (close) tes 2 fichiers une fois cette chose terminée.
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 10 mars 2007 à 20:46
le problème c'est que le textbox ne peut dépasser un certain nombre de caractères mais si j'envoi le contenu ligne par ligne avec un
dim mem as string
mem=mem+l$
sa marche normalement ?!
123
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 mars 2007 à 20:58
Excuse-moi ...
Que viendrait faire une textbox dans cette affaire ? D'où sort-elle, d'un coup ? (je ne la vois pas dans tes autres messages !
Tu nous en parles maintenant.... et c'est peu sensé (un euphémisme...)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 mars 2007 à 21:57
Je ne sais pas si FSO permet de lire de gros fichiers, perso je ne l'utilise jamais.
Mais avec une ouverture classique de fichier par l'instruction open, tu peux parfaitement lire un fichier de 5mo en une seule fois.
Quant au Textbox, effectivement il est limité à 64ko, donc pour un texte de taille suppérieure, il faut utiliser un RichTextBox, illimité et qui d'ailleurs possède ses propres methodes pour ouvrir et enregistrer un fichier
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 mars 2007 à 12:48
oublie FSO, comme son nom l'indique ("File Scripting Object") c'est réservé au Scripting.
c'est très lent.
5Mo, ca n'est pas un très gros fichier....
lis le par paquets de quelques kilos. (et non ligne a ligne) ca risque d'être long, sans cela.
gaffe a bien gérer la rupture des blocs, et a ne pas traiter la derniere ligne de ton paquet, sauf a la fin du fichier (pas clair, peut etre...)
ensuite, pour ajouter tes entêtes en début de ligne, tu peux faire, par exemple :
a = "ENTETE" & Replace ( a , vbNewline, vbnewline & "ENTETE")