Lire une ligne quelconque d'un fichier *.txt

Résolu
Mechanicman Messages postés 60 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 7 novembre 2004 - 7 nov. 2004 à 02:33
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur 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

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 nov. 2004 à 04:22
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
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 nov. 2004 à 10:24
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
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 nov. 2004 à 10:47
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.
0
Mechanicman Messages postés 60 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 7 novembre 2004
7 nov. 2004 à 13:21
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
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 nov. 2004 à 18:32
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
0
Rejoignez-nous