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 :

[VB6] Problème contrôle Timer et boucle For-Next ...


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [VB6] Problème contrôle Timer et boucle For-Next ...
    Bonjour,
    Je me présente, Stéphane BEHMENBURG, 38 ans, marié, 3 enfants, je suis astronome amateur au sein de la Société d'Astronomie de METZ - MESSIER 57.
    Pour l'astronomie, je suis amené à m'intérresser de près où de loin à d'autres activités telles que l'électronique, les mathématiques, la physique ... et pour facilité tout çà à l'informatique ... sur mon lieu de travail on avait 1 licence VB6 depuis 1999 ... qui n'avait jamais servi ... mais depuis 1 mois m'y suis mis en achetant des livres de chez Micro... tions.
    Dernièrement j'ai réalisé un accessoire (Une roue à filtres motorisée) qui est pilotée par le port série du PC ... j'ai trouver sur ce site les renseignements nécessaires pour le comtrôle du port série .... mais voilà que je bute depuis 1 semaine sur un problème plus que basique à mon sens.
    Je vous transcrit une partie du code ... se sera plus facile :

    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
    PrivateSub ...
    ...
       For N = 1 To 3  'où 3 est un exemple
          Instruction 1 ...
          Instruction 2 ...
          ...
          Timer1.Enabled = True 'J'enclenche le Timer1 où Value = 3000 ms
       Next N
    ...
    --------------------------------------------------
    PrivatSub Timer1.timer()
    ...
       Instruction a ...
       Instruction b ...
       ...
       Timer1.Enabled = False 'J'arrete le Timer1 à la fin des 3000 ms
    End Sub

    En fait je souhaiterais que dans la boucle For-Next, après les instructions 1, 2 et le déclenchement du Timer1 ... on attende que Timer1.Enabled = False avant de recommencer la boucle ... j'ai été assez clair là ,o)))

    En effet ma boucle For-Next s'éxécute bien 3 fois, mais pas avec un intervale de 3000 ms.

    Et là je n'ai pas trouvé de solution, je pense que ce doit être simple, mais VB6 pour moi = 1 mois seulement.

    Voili voilou,
    j'espère que vous allez pouvoir m'aider.

    Stéphane BEHMENBURG

    [déplacé par titi depuis mode d'emploie & aide aux nouveaux]

  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 546
    Points
    15 546
    Par défaut
    hello Stéphane,

    Tu peux réaliser ce que tu souhaites si, dans ta boucle, tu places 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
    Sub LancerUneMacroToutesLesTroisSecondes() 
        PauseTime = 3       ' Définit la durée en secondes 
        For i = 1 To 3 
            Start = Timer   ' Définit l'heure de début. 
            Je_Compte       'lance la macro 
            Do While Timer < Start + PauseTime 
            Loop 
        Next i 
    End Sub 
     
    Sub Je_Compte() 
        compte2 = compte2 + 1 
    End Sub
    Start devra être déclaré en Public
    (j'ai été interrompu dans ma réponse, aussi il est possible que j'arrive après la bagarre...)

  3. #3
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Bonjour,
    D'après ce que moi j'ai compris des controles timer, je crois que toi tu ne l'a pas compris.
    Personnellement je me sert des controles timers pour lancer des actions à interval (plus ou moins) régulier.
    Mon timers (après le chargement complet de la forme) tourne généralement jusqu'a l'arrêt du programme et dans l'evement _Timers je code ce que je veux faire (dont des calcul d'intervalles, des times out, etc).
    Si tu veux espacer les passages dans ta boucle, tu peux:
    - utiliser la fonction API sleep (Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)) => Moyen
    - Utiliser la fonction timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Mondebut = timer
    Do while timer - Mondebut <3 
    doevent
    loop
    => très moyen
    - Utiliser le controle Timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private sub MonTimer_Timer
    Static iNbPassage  As Integer
    iNbPassage  = iNbPassage   + 1
    if iNbPassage  =< 3 then
       ... 'le code qui va s'executé toutes les 3 secondes et seulement 3 fois 
    end if
    le mieux.

  4. #4
    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 546
    Points
    15 546
    Par défaut
    tu utilises "Private sub MonTimer_Timer"
    Ma question : en vb, cette procédure lance-t-elle le timer ?
    (Je n'ai pas ça en VBA)

    A+

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci les gars,
    je vais bûcher tout ça ce soir, et je vous tiens au courant.

    Stéphane

  6. #6
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Non cela ne lance pas le timer, c'est l'évément créé par le "déclenchement" du controle timer (! <> de la fonction). Cette procédure est créée automatiquement par Vb (elle est vide !) dès que l'on place un controle timer dans la feuille (form).
    Le démarrage du controle timer se fait par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTimer.enabled = true

  7. #7
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    et pourquoi ne pas vraiment arreter ta procedure ?? avec l'API sleep.

    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
     
    PrivateSub ... 
    ... 
    For N = 1 To 3 'où 3 est un exemple 
    Instruction 1 ... 
    Instruction 2 ... 
    ... 
     
    sleep 3000  'tu arrete l'execution de ta procedure pendant 3 s pour permettre au timer de s'executer
     
    Timer1.Enabled = True 'J'enclenche le Timer1 où Value = 3000 ms 
    Next N 
    ... 
    end sub
     
     
    PrivatSub Timer1.timer() 
    ... 
    Instruction a ... 
    Instruction b ... 
    ... 
    Timer1.Enabled = False 'J'arrete le Timer1 à la fin des 3000 ms 
    End Sub

Discussions similaires

  1. [XL-2013] Problème pour utiliser boucle For -> Next
    Par parvi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/04/2015, 11h20
  2. [XL-2007] Problème dans une boucle For..Next
    Par robby98800 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2012, 07h48
  3. VB6 Arret boucle FOR NEXT par appui sur un bouton
    Par obel38 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/01/2011, 16h35
  4. [VB.net] Boucle for next avec un tableau
    Par grand_prophete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 11h08
  5. Réponses: 3
    Dernier message: 03/11/2005, 19h22

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