Lecture Fichier Txt

Résolu
Signaler
Messages postés
11
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 décembre 2006
-
Messages postés
11
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 décembre 2006
-
Bonjour, Débutant en Visual Basic J'aurais besoin d'un peu d'aide sur la lecture d'un fichier Txt.

En fait dans mon fichier .txt j'ai plusieures informations: un nom et une date.
Je voudrais que mon programme ouvre le fichier txt lise d'abord le nom et le mette dans une variable puis lise la date et la mette dans une autre variable.

ex de fichier txt :

Toto   25101952
Bertrand   03021978

(Les 2 informations sont separés par une tabulation)

Je connais la commande
Open  fdsfsd.txt for input as #1
Do Until EOF(1)
Line Input #1, Noms
Loop
Close #1

Mais ceci ne me permet que de lire entierement la ligne et non pas de separer en 2 variables.

Merci de votre aide

7 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Et bien au lieu de declarer Noms et Date comme tableau declare les simplement comme Chaine simple

Soit
'La ligne
Dim Ligne As String 
Dim Param() As String 
'LE nom
Dim Noms As String 
'Le tableau
Dim DateN As String 
'OUverture en lecture
Open "C:\Test.txt" For Input As #1 
    Do Until EOF(1) 
        'Recuperation de la ligne
        Line Input #1, Ligne 
        '"Casse" la ligne avec Tabulation
        'Comme séparateur
        Param = Split(Ligne, vbTab) 

        Noms = Param(0) 
        DateN = Param(1) 
    Loop 
Close #1

@+,   Ju£i?n
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
IL te faut utiliser la fonction Split

Voici un exemple::

'La ligne
Dim Ligne As String 
Dim Param() As String 
'LE tableau de noms
Dim Noms() As String 
'Le tableau de date
Dim DateN() As String 
'Redimenssionnement des tableaux
ReDim Noms(0) 
ReDim DateN(0) 
'OUverture en lecture
Open "C:\Test.txt" For Input As #1 
    Do Until EOF(1) 
        'Recuperation de la ligne
        Line Input #1, Ligne 
        '"Casse" la ligne avec Tabulation
        'Comme séparateur
        Param =  Split(Ligne, vbTab) 
        'Place dans le tableau nom
        Noms( UBound (Noms))  = Param(0) 
        'Place dans le tableau date
        DateN(UBound(DateN)) = Param(1) 
        'Augmente la taille des tableau de 1
        ReDim Preserve Noms(UBound(Noms) + 1) 
        ReDim Preserve DateN(UBound(DateN) + 1) 
    Loop 
Close #1 

@+,   Ju£i?n
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

Essaie cette procédure :
Private Sub Test()
    Dim ff              As Integer
    Dim strFile         As String
    Dim Contenu         As String
    Dim strParLigne()   As String
    Dim strParMots()    As String
    
strFile = "C:\Documents and settings\Mortalino\Bureau\Nouveau Document texte.txt"
' n'oublie mas de modifier le chemin et nom du fichier

ff = FreeFile
Open strFile For Input As #ff
    Contenu = Input(LOF(ff), #ff)
Close #ff

strParLigne = Split(Contenu, vbCrLf)

For i = 0 To UBound(strParLigne)
    strParMots = Split(strParLigne(0), vbTab)
    For j = 0 To UBound(strParMots)
        MsgBox "-" & strParMots(j) & "-"
    Next j
Next i
    Erase strParLigne: Erase strParMots
End Sub

--Mortalino-- Colorisation automatique

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Arf, on a posté en même temps  ;)
Il aura le choix.
Pour mon code, j'ai omis la déclaration de i et j..

@++





<hr width="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
11
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 décembre 2006

Merci de vos réponses rapide

Maintenant une autre questions, serait t'il possible de faire la même chose avec seulement 2 variables, sans tableaux en supposant que dans notre fichier texte nous avons qu'une seule ligne comportant les 2 infos  (noms + date) toujors separé par une tabulation.

donc dans données.txt nous aurions :

Toto   25101982

Merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Excuse j ai oublier de supprimer la boucle de lecture (=> si il n' y a qu une seule ligne alors plus besoin de boucle)

@+,   Ju£i?n
Messages postés
11
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 décembre 2006

Merci pour vos solutions qui on resolu mon problème et m'on appris a en savoir un peu plus sur certaines commandes de VB.
Merci aussi pour la rapidité de vos réponses.

A+