Lire un fichier
Il y a trois possibilités. Deux que je ne cite que pour l’anecdote, car mieux vaut les éviter, et une vraiment utile.
Pour l’anecdote uniquement, donc :
NomDeVariable = Input (100, #i)
...recopie dans NomDeVariable les 100 caractères suivants du fichier numéro i, à partir de la dernière lecture. Sinon, on peut aussi faire :
Toto = LOF(#i)
Input (Toto, #i)
Toto récupère ici le nombre de caractères du fichier texte, via la fonction LOF. On recopie ensuite tout le fichier d’un seul coup d'un seul dans la variable NomDeVariable.
Mais l'avantage des fichiers texte étant d'être organisés par lignes, c'est-à-dire par enregistrements, voilà ce qu’il faut utiliser afin de ne pas perdre cette structuration :
Line Input #i, NomDeVariable
C’est de loin la meilleure solution. Elle suppose toutefois que le fichier texte soit correctement construit, c’est-à-dire que chaque série de champs se termine par les caractères CR LF, formant ainsi une ligne (vous n’avez pas besoin de vous tracasser pour cela, si vous avez vous-mêmes correctement créé le fichier texte). A ce moment-là, chaque lecture avec Line Input copie la ligne suivante du fichier dans NomDeVariable.
Si vous avez eu de surcroît la bonne idée de bâtir votre fichier sous forme de champs de largeur fixe, ce sera un jeu d'enfants de récupérer, au sein de chaque ligne, les différents champs. D'une manière ou d'une autre, il suffira de découper à un moment ou à un autre NomDeVariable en différents morceaux via la fonction Mid (on aura soin d’épurer les espaces inutiles grâce à la fonction Trim mentionnée précédemment.
Je rappelle qu'avec les fichiers, la technique standard consiste à balancer d'entrée de jeu l'intégralité du fichier en mémoire vive, autrement dit dans un tableau (on évite de faire cela uniquement si le fichier est vraiment trop massif pour tenir en mémoire, ce qui est un cas très rare). En revanche, pour le détail, on peut opter pour plusieurs options : soit "casser" d'entrée chaque ligne du fichier en différents champs qui rempliront différents tableaux, soit tout envoyer dans un seul tableau, à raison d'une ligne complète par élément du tableau, ligne dont on extrait ensuite les champs au fur et à mesure des besoins. C'est au choix du client. Cette seconde technique donnera, extrêmement classiquement, les lignes de code suivantes :
Dim T() as string
...
Open "C:\Monfichier.txt" As #1 For Input
i = -1
While Not Eof(1)
i = i + 1
Redim Preserve T(i)
Line Input #1, T(i)
Wend
Le principe est simple : on crée un tableau dynamique. On parcourt le fichier ligne après ligne tant qu'il en reste (boucle While ... Wend). A chaque ligne, on actualise l'indice i, on redimensionne le tableau, et on recopie la ligne dans la nouvelle case ainsi créée, tout en préservant les cases précédemment remplies. Et hop.