Lire une ligne quelconque d'un fichier *.txt [Résolu]

Messages postés
60
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
7 novembre 2004
- - Dernière réponse : cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 7 nov. 2004 à 18:32
Voilà,
j'ai un fichier .txt avec par exemple 20 prénoms en vrac ( 1 prenom par ligne) , je voudrais savoir comment lire par exemple la ligne 3 pour afficher aleatoirement des prenoms

Merci d'avance
Mechanicman

"Ceux qui jouissent de nos privilèges oublient avec le temps que d'autres sont morts pour les acquérir." Franklin D. Roosevelt
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
Salut Mechanicman
Non, si ton fichier doit-être lu ligne par ligne et ces lignes n'ayant pas la même taille, il n'est pas possible d'aller directement à la 3ème ligne.
Il faut que tu lises toutes les lignes de 1 à 3 et t'arrêter de lire quand tu as atteint ta 3e ligne (avec un peit compteur).
Pour info, quand tu es dans une boucle et que tu veux sortir, il te suffit de faire : Exit Do, Exit For

Vala
Jack

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
0
Merci
Pour cela, je te conseille plutôt de stocker toutes tes lignes dans un tableau de chaîne, et d'afficher la ligne que tu veux. Ca évite ainsi d'accèder trop souvent au fichier si tu dois le faire plusieurs fois !
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
0
Merci
Ceci ressemble plus à la méthode de DARKSIDIOUS qu'à celle de jack... en fait, c'est même carrément çà. :)

Dim tablo(50) As String

Private Sub Form_Load()
Dim num As Long
Dim s As String
Dim compt As Long

num=FreeFile
compt=0
Open "C:\mon_texte.txt" For Input As #num
While not EOF(num) And compt<=50
Line Input #num,s
tablo(compt)=s
compt=compt+1
Wend
Close #num
End Sub


et partout ailleurs dans le code :

tablo(3) = 4ème nom
tablo(25) = 26ème nom
tablo(N) = (N+1)ème nom

N'oublie pas de remplacer "C:\mon_texte.txt" par la bonne valeur !!

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
60
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
7 novembre 2004
0
Merci
Merci pour vos réponses, j'ai opté pour l'ajout d'une variables qui fait office de compteur, c'était ma solution de rechange mais bon...comme il n'y a pas mieux...on fait avec :/

"Ceux qui jouissent de nos privilèges oublient avec le temps que d'autres sont morts pour les acquérir." Franklin D. Roosevelt
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Oui, aussi la technique du "je charge tout le fichier en mémoire" :
    Dim ff As Integer, Lignes() As String, Temp As String

    ff = FreeFile
    Open "C:\MonRép\MonFichier.txt" For Binary As #ff
        Temp = String(FileLen("C:\MonRép\MonFichier.txt"), " ")
        Get #ff, , Temp ' Récupère tout le fichier
    Close #ff
    ' Sépare toutes les lignes
    Lignes = Split(Temp, vbCrLf)
    Debug.Print Lignes(0)   ' 1ere ligne
    Debug.Print Lignes(32)  ' 33ème ligne


Vala
Jack

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.