Parcourir et récupérer des données dans un fichier texte.

Résolu
vertigo56 Messages postés 3 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 27 avril 2008 - 20 avril 2008 à 12:24
vertigo56 Messages postés 3 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 27 avril 2008 - 20 avril 2008 à 13:49
    Bonjour à tous,

Je me trouve devant un problème qui ne s'était jamais posé auparavant.
Je dois réaliser une base de données permettant un suivi d'employés.

Les utilisateur de la base de données pourront importer un fichier texte, ce fichier texte contiendra tout "les enregistrements"qui seront enregistrés dans la base de données. A noter que  les champs ( Si on peut parler de ça dans un fichier texte)  sont séparés par des tabulations.
Exemple dans mon fichier texte :

Nom    Prénom   Age   Sexe   Ville
Dubois   Philippe   55   Masculin   Paris
Dupont   Julien    46   Masculin   Paris

J'ai déja créer ma table qui recevra ces enregistrement.

La question que je me pose c'est comment dans mon fichier texte détecter les tabulations, puis ensuite prendre "champ" par "champ", dans mon cas, mettre Dubois dans une variable, Philippe dans une autre, 55 dans une autre... une fois que j'ai ça je pense que ça ira ... je prends les variables et je m'en sert pour faire mon insert, par contre je me demande aussi comment détecter que c'est un nouvel enregistrement, en gros comment lui dire que dés qu'il n'y a plus de données à la fin de la ligne, il doit aller à la ligne suivante du fichier texte, ce qui signifie que c'est un nouvel enregistrement, dans ce cas là je pense que je recommencerai ma boucle mais comment représenter celà...

J'ai trouvé ce petit script sur vbfrance :

Dim t() as string
dim buf as string
dim nf as integer
nf = freefile
open "Chemin_Fichier" for input as #nf
do while not eof(nf)
line input #nf, buf
t=split(buf,";")'là, traitement : t(0) 0000000000 et t(1) 9999999999 pour ton exemple
loop
close #nf

Mais je n'arrive pas trop à le comprendre.

Je ne sais pas si ça pourrait être une partie de la solution.

Merci aux âmes charitables qui me répondront.

2 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 avril 2008 à 13:46
Dim t() as string
dim buf as string
dim nf as integer
nf = freefile
open "Chemin_Fichier" for input as #nf 'CheminFichier est à remplacer par le chemin réel du fichier
do while not eof(nf) 'ICI c'est justement la boucle de lecture du fichier
line input #nf, buf  'ICI à chaque cycle on lit une ligne du fichier
t=split(buf,";")     'ICI on découpe la ligne en un tableau de données en utilisant le ; comme séparateur. Donc toi il te faudra remplacer ";" par vbTab
'là, traitement : t(0) 0000000000 et t(1) 9999999999 pour ton exemple
'Ben là comme c'est dit, tu dois traiter tes données, c'est à dire faire l'insert dans la base.
't(0) contiendra le nom, t(1) le prénom, ....

loop 'Et on recommence la boucle
close #nf



Pour ce qui est de detecter une nouvelle ligne c'est "automatique". Line Input lit une ligne du fichier et positionne le curseur sur le caractère suivant, donc le 1er caractère de la ligne suivante, si elle existe.
Pour savoir si elle existe, en d'autre termes pour savoir si tu n'es pas arrivé à la fin du fichier c'est Not Eof(nf) qui te le dit dans la condition de la boucle.

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
vertigo56 Messages postés 3 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 27 avril 2008
20 avril 2008 à 13:49
    Merci infiniment ! :) Je vais me lancer la dedans !

Quel rapidité dans la réponse encore merci ! :)
0
Rejoignez-nous