Sélectionner une partie d'un fichier texte

Signaler
Messages postés
30
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
3 avril 2009
-
Messages postés
30
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
3 avril 2009
-
Bonjour,

J'arrive à afficher sans problème le contenu complet d'un fichier txt dans un label, mais est-il possible d'afficher seulement une sélection du fichier, par exemple afficher le texte entre deux lignes bien précises?

Merci d'avance

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Oui, bien sûr, mais il faudra mettre le code qui va bien.
Le transfert de ton fichier vers ton Label se faisant par programme, il suffit de détecter quand commencer et quand finir.
A toi de les définir.
Si c'st un texte qui doit faire le déclencheur, tu le repèreras avec l'instruction Instr.
On n'a aucune idée de la manière avec laquelle tu lis ton fichier actuellement.
Si tu lis ligne par ligne avec un "Line Input #", il te suffira de faire le test de recherche de cette chaine de départ, puis, quand tu l'aura rencontré, tu transfèreras les données suivantes dans ton Label.
Là encore, il faudra rechercher ton texte déclencheur de fin pour savoir quand arrêter d'envoyer vers le Label.

Si tu n'es pas très sûr côté lecture de fichier, charge 2 ou 3 sources qui parlent de fichier et regarde comment s'est fait.
Instructions de base : "Open", "Close #", "Line Input #", "Do-Loop", "Instr"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
30
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
3 avril 2009

Pour l'instant je lis mon fichier en entier comme ca:

CheminFichier = "c:.........."
a = FreeFile()
Open CheminFichier For Input As #a
      Label1.Caption = Input(LOF(a), a)
Close #a

J'ai deja vu qu'on pouvait utiliser "Line Input", donc je vais creuser le probleme avec "Instr"

Merci Jack
Messages postés
30
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
3 avril 2009

Beh je doit être vraiment bête car meme avec beaucoup d'exemple je n'y arrive pas!!

Je fait un espece de jeu de role où tous les paragraphes de mon histoire sont dans un fichier txt, ce que j'aimerai c'est pouvoir accéder au bon paragraphe en fonction des actions effectuées par le joueur, et afficher le paragraphe en question dans un label.
Donc je cherche une solution pour afficher le texte de mon fichier entre la ligne 25 et 40 par ex. Si cette méthode n'est pas possible ok pour chercher une chaine de caractères qui repèrerai mon paragraphe.
J'ai trouvé ce code censer afficher 10 lignes mais rien à faire je n'arrive pas à le faire fonctionner!

OPEN "bod.txt" FOR INPUT AS #2

10 LINE INPUT #2, Li$
PRINT Li$
IF EOF(2) <> 1 THEN 10

Je débute et j'ai vraiment trop de mal ...........
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Disons que tu veuilles lire à partir de la ligne 4 les 5 lignes qui suivent, il te faut donc un compteur pour savoir où tu en es dans la lecture

Sub LectureLineInput()
    Dim Compteur As Long, I As Integer
    Dim strTemp As String, strFinale As String
    Dim CheminFichier As String, a As Integer
   
    CheminFichier = "c:\Test.txt"
    a = FreeFile()
    Open CheminFichier For Input As #a
        Do Until EOF(1)  'lire tant qu'on est pas rendu à la fin du fichier
            Line Input #a, strTemp
            Compteur = Compteur + 1     'indique le numéro de ligne lue
            If Compteur = 4 Then             'lecture à partir de la 4e ligne
                For I = 1 To 5                    'lecture des 5 lignes suivantes
                    Line Input #a, strTemp
                    strFinale = strFinale & strTemp & vbCrLf
                Next
                Exit Do  'sortir de la boucle... ça ne sert à rien de continuer
            End If
        Loop
    Close #a
    MsgBox strFinale
End Sub

MPi²
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Oups... l'habitude...
changer EOF(1) pour EOF(a)

MPi²
Messages postés
30
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
3 avril 2009

Ca fonctionne impec et ça aide à bien comprendre, c'est vraiment sympa je vais pouvoir avancer dans mon projet maintenant!

Merci MPi²