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 :

utilisation d'un timer en VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut utilisation d'un timer en VB6
    J'aimerais utiliser un timer pour pouvoir faire des actions.
    En effet, une fois que le décompte est fini, je passe à l'action suivante.
    Je ne vois pas trop comment utiliser le composant timer pour ça.

    Pouvez-vous m'aideR?

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    en faite, je voudrais que lorsque je clique sur un bouton , mon timer compte toutes les secondes par exemple jusqu'à une durée N (défini par l'ulitisateur).
    Toutes les secondes, j'ai un compteur qui décrémente.

    Par exemple, N=10.
    compteur = 3

    toutes les secondes,
    Compteur = Compteur -1

    comment peux - t'on faire cela?

  3. #3
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 639
    Par défaut
    Citation Envoyé par sandball22 Voir le message
    je passe à l'action suivante.
    C'est quoi une action pour toi ?

    Tu peux être plus précis ? C'est un changement de couleur sur un objet? un lancement d'une feuille? Un clignotement de quelque chose ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    une action, c'est un appel de fonction qui fera un traitement.


    Par exemple, N=10000.
    compteur = 3

    toutes les secondes,
    Compteur = Compteur -1
    si le compteur =0 alors on décremente un aute compteur....

    est ce posible de le faire?

    je viens de voir comment on activait un timer.
    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
     
    'activation du compteur
    timer2.Interval = 1
    timer1.enabled = true
     
     
    Private Sub Timer1_Timer()
     
    compteur1 = compteur1 - 1
     
    If compteur1 = 0 Then
        MsgBox ("temps 1 fini!!")
    ''    compteur2 = compteur2 - 1
     
    End If
    End Sub
    comment faire pour activer le decompte du 2ème compteur que lorsque le 1er compteut a fini de décompter?

  5. #5
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut
    Citation Envoyé par sandball22 Voir le message
    comment faire pour activer le decompte du 2ème compteur que lorsque le 1er compteut a fini de décompter?
    A la fin de ton Sub Timer1_Timer () tu mets:
    Puis à l'affichage de ton action suivante du mets

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    c'est un compteur que je veux décompter non pas ajouter un nouveau timer.

    je veux juste utiliser un seul timer.


    toutes les secondes,
    Compteur = Compteur -1
    si le compteur =0 alors on décremente un aute compteur....

    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
     
    'activation du compteur
    timer2.Interval = 1
    timer1.enabled = true
     
     
    Private Sub Timer1_Timer()
     
    compteur1 = compteur1 - 1
     
    If compteur1 = 0 Then
        MsgBox ("temps 1 fini!!")
    '    compteur2 = compteur2 - 1
     ' on décremente le compteur 2
    End If
    End Sub

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 140
    Par défaut
    Citation Envoyé par sandball22 Voir le message
    c'est un compteur que je veux décompter non pas ajouter un nouveau timer.

    je veux juste utiliser un seul timer.


    toutes les secondes,
    Compteur = Compteur -1
    si le compteur =0 alors on décremente un aute compteur....

    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
    'activation du compteur
    timer2.Interval = 1
    timer1.enabled = true
     
     
    Private Sub Timer1_Timer()
     
    compteur1 = compteur1 - 1
     
    If compteur1 = 0 Then
        MsgBox ("temps 1 fini!!")
    '    compteur2 = compteur2 - 1
     ' on décremente le compteur 2
    End If
    End Sub
    Si Timer1.Interval = 1000, 1000 = 1Sc puisque Interval pour l'objet Timer est en Msc.
    Après la condition If compteur1 = 0, compteur1 ne doit il pas être réinitialisé autre que zéro ?
    A quoi sert Timer2 dans le dernier code ?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    Le timer 1 ne doit pas s'arrêter avant une certaine valeur définit par l'utilisateur. (ex : 1200s)
    j'ai fait une erreur dans le code précédent.
    Voici le nouveau 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
    17
     
     
    'activation du compteur
    timer1.Interval = 1
    timer1.enabled = true
     
     
    Private Sub Timer1_Timer()
     
    compteur1 = compteur1 - 1
     
    If compteur1 = 0 Then
        MsgBox ("temps 1 fini!!")
    ''    on decompte le compteur2 = compteur2 - 1
     '....
    End If
    End Sub
    Je ne veux qu'un seul timer. et je veux décompter des compteurs!! lorsque le compteur1est à 0 je dois décompter le compteur2.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    J'ai fait de cetet manière mais j'ai un problème, le compteur 2 est fini avant le compteur 1 alors que normalement le compteur2 doit commencer à décrémenter apres la fin du compteur 1. Pouvez vous m'aider?

    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
     
    Private Sub Timer1_Timer()
    'compteur1=200
    'compteur2=100
     
    compteur1 = compteur1 - 1
    If compteur1 = 0 Then
        MsgBox ("temps 1 de la pile 1 fini!!")
        GoTo compteur_nb_2
    End If
     
    compteur_nb_2:
    compteur2 = compteur2 - 1
    If compteur2 = 0 Then
        MsgBox ("temps 2 de la pile 2 fini!!")
    End If
     
    en sub

  10. #10
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    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
    19
    Private Sub Timer1_Timer()
    'compteur1=200
    'compteur2=100
     
    If compteur1 > 0 then 
      compteur1 = compteur1 - 1
      If compteur1 = 0 Then
        MsgBox ("temps 1 de la pile 1 fini!!")
        compteur1 = -1
      End If
    End If
     
    If compteur1 = -1 then 
      compteur2 = compteur2 - 1
      If compteur2 = 0 Then
        MsgBox ("temps 2 de la pile 2 fini!!")
        Timer1.Enabled = False
      End If
    End If

  11. #11
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    Suggestion: pourquoi ne pas faire

    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
     
     
    Private Sub Timer1_Timer()
        'compteur(1)=200
        'compteur(2)=100
        i=0
        Do 
     
             i = i + 1
            compteur(i) = compteur(i) - 1
            If compteur(i) = 0 Then
                 MsgBox ("temps " & Str(i)  & " de la pile " & Str(i) &" fini!!")
     
            End If
     
        Loop Until DernierIndiceCompteur
        Timer1.Enabled = False
    End Sub

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    Je voudrais généraliser ce que me propose OhMonBato car cela fonctionne pour 2 compteurs.

    Ce que tu me proposes iclic ne fonctionne pas.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    en effet ilic, suel le 1er compteur décompte pas les autres

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    J'ai avancé un peu sur le sujet mais j'ai toujours un soucis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Timer1_Timer()
    If compteur(N) <> 0 Then
                    compteur(N) = compteur(N) - 1
                Else
                    'Call configuration_defaut_port
                    txtRecap.Text = "Temps(" & temps & ") de la pile " & N & "écoulé !!"
                    bvaleur = True
     
                End If
    end sub
    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    Private Sub cmdLancerBanc_Click()
     
    bvaleur = True
     
     
    With frmVisualisationScenario.MSFlexGridScenario
     ReDim P1(.Cols - 2)
       N = 1
        For i = 1 To .Cols - 1 Step 1
               courant = .TextMatrix(i, 1)
               compteur(N) = .TextMatrix(i, 2)
     
           While bvaleur = True
                temps = compteur(N)
               Call config_port(courant)
               txtRecap.Text = "Lancement du banc de test" & vbCrLf & "pile à vide" & vbCrLf & "courant = " & courant & vbCrLf & "temps  = " & compteur(N)
               bvaleur = False
               Timer1.Enabled = True
     
           Wend
     
        Next i
     
     
    End With

    Mon compteur décompte bien pour ma 1ere valeur (i=1) mais pas pour les valeurs suivantes.

    Quelqu'un peut m'aider ? merci

  15. #15
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut Correction compteur
    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
    19
    20
    21
    22
    23
    24
     
    Private Sub Timer1_Timer()
     
        Dim compteur() As Long
        Dim i As Integer
        Dim IndiceCompteur As Integer
     
        IndiceCompteur = 2
        ReDim compteur(IndiceCompteur)
     
        compteur(1) = 20
        compteur(2) = 10
        i = 1
     
        Do
            compteur(i) = compteur(i) - 1
            If compteur(i) = 0 Then
                 MsgBox ("temps " & Str(i) & " de la pile " & Str(i) & " fini!!")
                 i = i + 1
            End If
        Loop Until i > IndiceCompteur
     
        Timer1.Enabled = False
    End Sub
    De sandball22

    Mon compteur décompte bien pour ma 1ere valeur (i=1) mais pas pour les valeurs suivantes.
    Normal
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Private Sub cmdLancerBanc_Click()
     
    bvaleur = True
     
     
    With frmVisualisationScenario.MSFlexGridScenario
     ReDim P1(.Cols - 2)
       N = 1
        For i = 1 To .Cols - 1 Step 1
               courant = .TextMatrix(i, 1)
               compteur(N) = .TextMatrix(i, 2)
     
           While bvaleur = True   ' i = 1 tu passes dans la boucle
                temps = compteur(N)
               Call config_port(courant)
               txtRecap.Text = "Lancement du banc de test" & vbCrLf & "pile à vide" & vbCrLf & "courant = " & courant & vbCrLf & "temps  = " & compteur(N)
               bvaleur = False
               Timer1.Enabled = True
     
           Wend  ' bvaleur = false : tu sors de la boucle
     
           'Puique bvaleur = false , tu ne passes jamais plus dans la boucle 
           'pour les autres valeurs de i
     
        Next i
     
     
    End With

Discussions similaires

  1. [VB6]Utilisation des formulaires Access dans VB6
    Par AurelieB dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/05/2006, 07h48
  2. Utilisation d'un timer de la MFC
    Par bobirem dans le forum MFC
    Réponses: 5
    Dernier message: 09/05/2006, 00h11
  3. utilisation d'un timer
    Par jiraya43 dans le forum MFC
    Réponses: 2
    Dernier message: 04/05/2006, 16h52
  4. [Langage]Comment utiliser une dll .NET dans VB6?
    Par BouB dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/04/2006, 14h20
  5. [Débutant] Utilisation d'un timer
    Par mickael777 dans le forum MFC
    Réponses: 7
    Dernier message: 28/10/2005, 11h40

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