IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

lecture de fichier


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 11
    Points : 2
    Points
    2
    Par défaut lecture de fichier
    Bonjour
    j'ai un probleme de lecture de fichier.j'essai de lire le fichier ligne par ligne
    mettre la ligne dans une variable que j'affiche dans un textbox
    le probleme que j'ai c'est que juste la derniere ligne qui s'affiche et pourtant j'ai fais une boucle pour tous lire voilà mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim File As TextStream
    Dim Path_File As String
    Dim ligne As String
    Dim i As Integer
     
    i = 0
    ligne = 0
    Path_File = "c:\test.txt "
    Set File = SystemeFichier.OpenTextFile(Path_File, ForReading)
    While Not File.AtEndOfStream
        line = File.ReadLine
        i = i + 1
        Text1.Text = ligne
     
    Wend
    File.Close
    merci de m'aider de voir ou ça bloque

    [Edit] Balises Code powered by Xo, merci d'y penser [/Edit]

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    A propos de fichier texte, j'ai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub LireFichierTxT() 
    Dim Ligne As String 
    Dim i As Long 
        i = 0 
        Open Me.TxtFile.Text For Input As #1 
        While Not EOF(1) 
            Input #1, Ligne 
            i = i + 1 
        Wend 
        MsgBox Ligne 
        Close #1 
    End Sub
    Si ça peut t'aider, tu remplaces MsgBox Ligne par un affichage dans ta textbox et un bouton suivant... ou aut'chose...

    A+

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    le probleme que j'ai c'est que juste la derniere ligne qui s'affiche et pourtant j'ai fais une boucle pour tous lire voilà mon code

    Dim File As TextStream
    Dim Path_File As String
    Dim ligne As String
    Dim i As Integer

    i = 0
    ligne = 0
    Path_File = "c:\test.txt "
    Set File = SystemeFichier.OpenTextFile(Path_File, ForReading)
    While Not File.AtEndOfStream
    line = File.ReadLine
    i = i + 1
    Text1.Text = ligne

    Wend
    Je dirais qu'il est normal que ça n'affiche que la dernière ligne lue.
    Quand tu fais Text1.Text = ligne dans la boucle, tu écrases à chaque fois la valeur.
    Si tu veux tout afficher, il faut que tu concatènes tes lignes dans la boucle et que tu alimentes Text1.Text = ligne après ta boucle.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    Tu programmes en quoi ??, VB.Net ??

    jpleroisse

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 11
    Points : 2
    Points
    2
    Par défaut vb6
    je pogramme avec vb6

    voila vous avez trouver ou clarifier mon probleme
    comment faire pour defiler mes lignes dans un textbox ou autre le plus important pour moi c'est quelles defilent

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Hello !
    Juste après ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Text1.Text = ligne
    mets une boucle vide qui compte jusqu'à 50000 (par exemple), pour avoir le temps de lire le contenu de ta ligne.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je reprends ta boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Public ok as boolean
    Sub TaSub()
    Dim File As TextStream 
    Dim Path_File As String 
    Dim ligne As String 
    Dim i As Integer 
    i = 0 
    ligne = 0 
    Path_File = "c:\test.txt " 
    Set File = SystemeFichier.OpenTextFile(Path_File, ForReading) While Not File.AtEndOfStream 
        line = File.ReadLine 
        i = i + 1 
        Text1.Text = ligne
        do While not ok         
        loop
        ok = false  
    Wend
    End sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private sub Text1_Click
    ok = true
    End sub
    C'était ça que je voulais dire

    A+

  8. #8
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    une boucle vide ? ok mais avec quel outil on fais ça

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pas besoin de compter avec ce que je t'ai passé.
    Je sais que tu répondais à Megaxel mais le résultat est similaire, sauf que dans "mon cas", c'est le lecteur qui a la maitrise du temps.

    A+

  10. #10
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    merci ouskel'n'or pour tous
    j'ai fais comme tu as dis
    ça a planté mon systeme aucun mesage d'erreur

  11. #11
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Si tu ne veux pas absolument avoir la maîtrise du temps (un peu mégalo, Ousk ? ), voici ma boucle vide qui compte jusqu'à 50000:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    For Tempo = 0 To 50000
    Next Tempo
    Et voilà! Simple, non?

  12. #12
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    j'ai erreur d'exection '6'
    depacement de capacité pour la boucle
    For Tempo = 0 To 50000
    Next Tempo

  13. #13
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Bon, j'ai été trop gourmand: compte jusqu'à 10000.
    Ou alors, déclare "Tempo" comme un Long:

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    merci ouskel'n'or pour tous
    j'ai fais comme tu as dis
    ça a planté mon systeme aucun mesage d'erreur
    Est-ce que je dois ou dois-je ?

    Pour tout dire, je ne comprends vraiment pas, ou alors, ta boucle de lecture du fichier se trouve dans "un endroit" imprévu... par moi.

    Désolé tout de même.

    Bonne chance avec Megaxel

  15. #15
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Salut,

    J'ai encore plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim fs, f
        Dim Content
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.OpenTextFile("C:\test.txt", 1, False, 0)
        Content = f.Readall
        f.Close
        Text1.MultiLine = True 'Forçage au multiligne
        Text1.ScrollBars = 2 'Scrollbar verticale
        Text1.Text = Content
    Testé et fonctionne très bien

    @+

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  16. #16
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha ouais, là, ça me plait!
    Je ne connaissais pas le "ReadAll", c'est drôlement pratique!
    Bien joué, Théo!

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    J'ai voulu essayer ton code mais celà ne marche pas chez moi (TexStream), connait pas.
    Enfin si tu dis que celà fonctionne chez toi, puisque tu récupères la dernière ligne, tu mets la valeur de la propriété Multiligne du TextBox à True et celà devrait aller.

    jpleroisse

  18. #18
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par Megaxel
    Ha ouais, là, ça me plait!
    Je ne connaissais pas le "ReadAll", c'est drôlement pratique!
    Bien joué, Théo!
    En plus, tu y gagne en mémoire puisque ton fichier n'est ouvert que peut de temps en comparaison avec une boucle de lecture ...

    C'est ici sur le forum que j'ai trouvé ça...

    @+

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  19. #19
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Si tu as besoin d'attendre entre chaque ligne, je te suggère soit l'utilisation d'un Timer, soit (le plus simple) de la fonction Sleep :

    Tu as juste besoin de la déclaration ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    La solution d'une boucle vide me paraît ford hasardeuse : aucune maîtrise du délai (dépend de la config), et consommatrice de mémoire
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Revue et corrigée
    J'ai utilisé un bouton sur le form pour lancer la lecture du fichier,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
        LireLeFichier
    End Sub
    Ensuite, j'ai utilisé mon code pour lire le txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub LireLeFichier()
    Dim Ligne As String
    Dim i As Long
        i = 0
        Open "p:\InserComplété.txt" For Input As #1
        While Not EOF(1)
            Input #1, Ligne
            i = i + 1
            UserForm1.Text1.Text = "N° ligne " & i & " - " & Ligne
            Temporisation (5)
        Wend
        Close #1
    End Sub
    Enfin, j'ai utilisé un sub temporisation que j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Temporisation(durée)
    Dim Tempo
        Tempo = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + durée)
        Application.Wait Tempo
    End Sub
    Testé, ça ne plante pas le système (les lignes testées font plus de 200 caractères)

    Si t'en veux pas... ch'ten voudrai pas

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 20h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 12h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 12h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 21h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo