Boucle avec intervalle entre chaque ligne

Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011 - 6 juil. 2010 à 20:41
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011 - 7 juil. 2010 à 21:40
Bonsoir,
J'aimerais mettre un intervalle entre la lecture de chaque ligne dans ma boucle
Quel qu'un peut m'aider SVP ?

Pour Jack:
Je n'ai pas compris comment adapter la technique donnée dans mon précèdent poste!

http://www.vbfrance.com/codes/TUTO-TECHNIQUE-ATTENDRE_21180.aspx

' Déclaration de la variable qui sera utilisée lire dans le fichier
Dim Ligne As String
' Déclaration de la variable qui sera utilisée pour arrèter la boucle
Dim Stop_Boucle As Boolean

Private Sub Bt_Lire_Click()
    'Activation de la variable
    Stop_Boucle = True
            'Boucle "infini jusqu'au stop"
            Do While Not bAnnuler
                ' Appel de la fonction Sub OuvertureFichier()
                Call OuvertureFichier
        'Conditionnement de l'arret de la boucle
        If Stop_Boucle = False Then
            'Quit
            Exit Do
        End If
    DoEvents
Loop

End Sub

Sub OuvertureFichier()
    ' Ouverture du fichier en lecture
    Open "C:\Liste.txt" For Input As #1
            ' Tant que le fichier n'est pas fini
            While Not EOF(1)
            ' Lecture de la ligne
            Line Input #1, Ligne
            ' Affichage de la ligne courante qui vient d'être lue
            'MsgBox (Ligne)
            List1.AddItem (Ligne)
        Wend
    ' Fermeture du fichier
    Close #1
End Sub

Private Sub Bt_Stop_Click()
    'Désactivation de la variable
    Stop_Boucle = False
End Sub

7 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
6 juil. 2010 à 23:30
Re
Do While Not bAnnuler
-->
Do While Stop_Boucle
Si tu ne lis que la moitié des messages qu'on écrit, ça peut durer longtemps.

Tu n'as pas compris ce tuto ?
Il n'y a que 10 lignes de code et 30 lignes d'explications !
Ouvre un nouveau projet pour les tester, pour voir comment ça marche.
0
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011
7 juil. 2010 à 09:21
Bonjour,
Voila pour le
Do While Stop_Boucle


' Déclaration de la variable qui sera utilisée lire dans le fichier
Dim Ligne As String
' Déclaration de la variable qui sera utilisée pour arrèter la boucle
Dim Stop_Boucle As Boolean

Private Sub Bt_Lire_Click()
    'Activation de la variable
    Stop_Boucle = True
        'Boucle "jusqu'au stop"
        Do While Stop_Boucle
                ' Appel de la fonction Sub OuvertureFichier()
                Call OuvertureFichier
            'Conditionnement de l'arret de la boucle
            If Stop_Boucle = False Then
        'Quit
        Exit Do
            End If
    DoEvents
Loop
End Sub

Sub OuvertureFichier()
    ' Ouverture du fichier en lecture
    Open "C:\Liste.txt" For Input As #1
            ' Tant que le fichier n'est pas fini
            Do While Not EOF(1)
                ' Lecture de la ligne
                Line Input #1, Ligne
                ' Affichage de la ligne courante qui vient d'être lue
                List1.AddItem (Ligne)
            DoEvents
        Loop
    ' Fermeture du fichier
    Close #1
End Sub

Private Sub Bt_Stop_Click()
    'Désactivation de la variable
    Stop_Boucle = False
End Sub


Pour ce qui est des techniques pour mettre "une pause" si j'ai bien compris elle semble s'appliquer en fin de boucle!
Ce que je cherche a fait c'est mettre une pause de 2 secondes entre chaque ligne de mon fichier texte!
J'avoue être un peux perdu.
0
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 juil. 2010 à 09:40
J'ai bien compris ce que tu cherches à faire.
Tu as tous les éléments, tu n'as plus qu'à intégrer la pause dans ton code.
5 minutes de concentration te suffiront.
0
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011
7 juil. 2010 à 11:16
Re,
Ca fonctionne mais, du fait que j'impose la lecture jusqu'à la fin du fichier, je ne parviens pas a modifier mon code pour que la commande stop fonctionne correctement!

' Déclaration de la variable qui sera utilisée lire dans le fichier
Dim Ligne As String
' Déclaration de la variable qui sera utilisée pour arrèter la boucle
Dim Stop_Boucle As Boolean

Private Sub Attendre()
    Dim MaDate As Date
      MaDate = Now
    Do While Abs(DateDiff("s", MaDate, Now)) < 2
        DoEvents
    Loop
End Sub

Private Sub Bt_Lire_Click()
    'Activation de la variable
    Stop_Boucle = True
        'Boucle "jusqu'au stop"
        Do While Stop_Boucle
                ' Appel de la fonction Sub OuvertureFichier()
                Call OuvertureFichier
            'Conditionnement de l'arret de la boucle
            If Stop_Boucle = False Then
        'Quit
        Exit Do
            End If
    DoEvents
Loop
End Sub

Sub OuvertureFichier()
    ' Ouverture du fichier en lecture
    Open "C:\Liste.txt" For Input As #1
            ' Tant que le fichier n'est pas fini
            Do While Not EOF(1)
                ' Lecture de la ligne
                Line Input #1, Ligne
                ' Affichage de la ligne courante qui vient d'être lue
                List1.AddItem (Ligne)
                
                Call Attendre
                
            DoEvents
        Loop
    ' Fermeture du fichier
    Close #1
End Sub

Private Sub Bt_Stop_Click()
    'Désactivation de la variable
    Stop_Boucle = False
End Sub
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 juil. 2010 à 11:39
C'est du grand n'importe quoi.
Je me demande si tu réfléchis avant de mettre des lignes de code.

-1- Comme je te l'ai dit depuis le début, le test pour faire le Exit Do n'est pas à l'endroit que je t'avais préconisé.
            'Conditionnement de l'arret de la boucle
            If Stop_Boucle = False Then
n'a pas besoin d'être là où il est puisque la condition du Do s'occupe déjà de surveiller cette variable.
Il faut déplacer cette ligne là où tu veux réellement faire cette surveillance : dans la boucle de lecture des lignes du fichier.

-2- Actuellement, tu appelles la Sub Attente à chaque ligne que tu lis dans le fichier. Es-tu sûr que ce soit ce que tu veux faire ?
A mon avis, cet appel irait plutôt dans la boucle de relance de la lecture globale.

Ré-flé-chis !

Fais des essais

Apprends à déboguer :
F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
F8 pour avancer d'une ligne de code
F5 pour continuer normalement
0
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011
7 juil. 2010 à 13:25
Re,
Jack a dit:
-1- Comme je te l'ai dit depuis le début, le test pour faire le Exit Do n'est pas à l'endroit que je t'avais préconisé.

            'Conditionnement de l'arret de la boucle
            If Stop_Boucle = False Then


n'a pas besoin d'être là où il est puisque la condition du Do s'occupe déjà de surveiller cette variable.
Il faut déplacer cette ligne là où tu veux réellement faire cette surveillance : dans la boucle de lecture des lignes du fichier.

' Déclaration de la variable qui sera utilisée lire dans le fichier
Dim Ligne As String
' Déclaration de la variable qui sera utilisée pour arrèter la boucle
Dim Stop_Boucle As Boolean

Private Sub Attendre()
    Dim MaDate As Date
      MaDate = Now
    Do While Abs(DateDiff("s", MaDate, Now)) < 2
        DoEvents
    Loop
End Sub

Private Sub Bt_Lire_Click()
    'Activation de la variable
    Stop_Boucle = True
        'Boucle "jusqu'au stop"
        Do While Stop_Boucle
                ' Appel de la fonction Sub OuvertureFichier()
                Call OuvertureFichier
        DoEvents
    Loop
End Sub

Sub OuvertureFichier()
    ' Ouverture du fichier en lecture
    Open "C:\Liste.txt" For Input As #1
        ' Tant que le fichier n'est pas fini
        Do While Not EOF(1)
            ' Lecture de la ligne
            Line Input #1, Ligne
            ' Affichage de la ligne courante qui vient d'être lue
            List1.AddItem (Ligne)
                
            Call Attendre
                'Conditionnement de l'arret de la boucle
                If Stop_Boucle = False Then
                    'Quit
                    Exit Do
                End If
        DoEvents
        Loop
    ' Fermeture du fichier
    Close #1
End Sub

Private Sub Bt_Stop_Click()
    'Désactivation de la variable
    Stop_Boucle = False
End Sub


Jack a dit:

-2- Actuellement, tu appelles la Sub Attente à chaque ligne que tu lis dans le fichier. Es-tu sûr que ce soit ce que tu veux faire ?
A mon avis, cet appel irait plutôt dans la boucle de relance de la lecture globale.

Oui c'est bien ce que je veux faire!
En fait mon fichier texte va contenir des commandes et je dois laisser un temps "d'exécution" entre chacune d'elle
0
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011
7 juil. 2010 à 21:40
Bonsoir,
Suis-je bon cette fois ci?
C'est relativement gourmand en CPU !!!!
La méthode utilisé n'est peut être pas des plus appropriée ?
0
Rejoignez-nous