Lire gros fichier

maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010 - 10 mars 2007 à 19:34
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 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

merci d'avance

123

8 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 ?
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
10 mars 2007 à 19:54
en effet pas précisé donc en l'occurence c'est une fichier text et j'aimerais pour tout dire qu'a chaque espace il y es un retour chariot ;)

123
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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.
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Derniè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
0

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

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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...)


Quelque chose m'échappe, là !
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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 #
0
lemoret Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 11 mars 2007
11 mars 2007 à 08:25
Par ailleurs, ce n'est pas la peine de déclarer deux fois fso ni de l'instancier trois fois
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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")

pas saisi le rapport avec un TextBox...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous