Arrêter un timer ds une routine

Résolu
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008 - 7 sept. 2006 à 16:45
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 8 sept. 2006 à 09:34
bonjour,

voilà j'ai créé un timer pour faire clignoter un text, et je souhaiterai l'arrêter lors d'un traitement d'une autre routine

en clair j'aimerai quitter le timer lorsque j'appui sur un bouton, quelle syntaxe faut-il que je marque ds mon code pour sortir du timer

j'ai tenté avec Exit Sub Timer1_Timer mais ca marche po !!!

Achi!!

16 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 sept. 2006 à 22:13
salut,

Mortalino -> "timer" = nom utilisé ici pour simuler mais en effet ce n'est pas un contrôle

Achi -> essaye comme çà :
'DANS TON MODULE
Public Timer1 As Boolean 
Public Timer2 As Boolean 
'
Public Sub Timer1_Timer() 
    Dim Start As Long 

    If Worksheets(1).CommandButton3.ForeColor = &HFF& Then 
        Start = Timer     ' Définit l'heure de début.
        Do While Timer < Start + 0.5 
            DoEvents     ' Donne le contrôle à d'autres processus.
            If Worksheets(1).CommandButton3.ForeColor = &HFF& Then Worksheets(1).CommandButton3.Caption = "" 
            If Not Timer1 Then Exit Do 
        Loop 
        Timer2 = True 
        Call Timer2_Timer 
    End If 
    Timer1 = False 
End Sub 
'
Public Sub Timer2_Timer() 
    Dim Start As Long 
    If Worksheets(1).CommandButton3.ForeColor = &HFF& Then 
        Start = Timer     ' Définit l'heure de début.
        Do While Timer < Start + 0.5 
            DoEvents     ' Donne le contrôle à d'autres processus.
            Worksheets(1).CommandButton3.Caption = "Annulation" 
            If Not Timer2 Then Exit Do 
        Loop 
        Timer1 = True 
        Call Timer1_Timer 
    End If 
    Timer2 = False 
End Sub 

'DANS TON USERFORM OU WORKSHEET OU J'SAIS PAS TROP QUOI ^^
'
Private Sub CommandButton1_Click() 
    Worksheets(1).CommandButton3.ForeColor = &HFF& 
    Timer1 = True 
    Call Timer1_Timer 
End Sub 
'
Private Sub CommandButton3_Click()
    Timer1 = False
    Timer2 = False
    Worksheets(1).CommandButton3.ForeColor = &H0& 
    Worksheets(1).CommandButton3.Caption = "Annulation" 
End Sub

<small> Coloration
syntaxique automatique [AFCK] </small>
       

++
PCPT   [AFCK]

<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
3
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
7 sept. 2006 à 16:49
Timer1.enable=false


ou


Timer1.interval =0







BasicInstinct
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
7 sept. 2006 à 17:01
salut BasicInstinct,

merci mais ca ne fonctionne pas, et ca certainement parce que j'ai besoin d'écrire ce code ds mon bouton. il me dit objet requis!!!

Achi
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 sept. 2006 à 17:07
Un timer en VBA ??
[infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA]

Met nous plus de code si tu veux que l'on trouve le problème.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
7 sept. 2006 à 17:12
salut Mortalino,

alors en fait lorsque j'appui sur un bouton je commande 2 timer (en VBA):

Private Sub CommandButton1_Click()
Timer1_Timer
End Sub

ds un module :

Public Sub Timer1_Timer()
Dim Start
    Start = Timer    ' Définit l'heure de début.
    Do While Timer < Start + 0.5
        DoEvents    ' Donne le contrôle à d'autres processus.
        Worksheets(1).CommandButton3.Caption = ""
    Loop
    Timer2_Timer


End Sub


Public Sub Timer2_Timer()
Dim Start
    Start = Timer    ' Définit l'heure de début.
    Do While Timer < Start + 0.5
        DoEvents    ' Donne le contrôle à d'autres processus.
        Worksheets(1).CommandButton3.ForeColor = &HFF&
        Worksheets(1).CommandButton3.Caption = "Annulation"
    Loop
    Timer1_Timer
End Sub

puis enfin lorque j'appui sur un 2ème bouton je veux arrêter mes timer!

Private Sub CommandButton3_Click()
Timer1.interval = 0
Worksheets(1).CommandButton3.ForeColor = &H0&
Worksheets(1).CommandButton3.Caption = "Annulation"
End Sub

il me mets en erreur objet requis...

voilivoilou Achi!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 sept. 2006 à 17:23
Une question bête !
Tes boutons, ils sont sur un UserForm ou sur la feuille ?
Si c'est sur la feuille, tes timers sont où ?

Sinon, privilégie la syntaxe Timer1.Enabled = False que l'interval à 0 (bien que cela fonctionne, il me semble)

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
7 sept. 2006 à 17:26
re,


mes bouton sont sur ma feuil, et mes timer sont ds  mon module,


et même Timer1.Enabled = False ne fonctionne pas!!!

Achi...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 sept. 2006 à 17:33
Un timer, en VB6, c'est un contrôle que tu es obligé de positionner sur une Form, sinon, il faut passer par des APIs.
Je conçois que tu puisses importer ce contrôle dans dans ton projet vba, mais j'ai du mal à imaginer son utilisation dans un module.

Désolé de ne pas vraiment comprendre, as tu plus de précisions à ce sujet stp. merci

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 sept. 2006 à 22:21
Je ne savais pas qu"en VBA
Sub Timer1_Timer()
fonctionnait comme ceci sans placer le "contrôle", que l"on place sur une Form en VB6.
J"essaierai à l"occasion

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 sept. 2006 à 22:26
c'est pas qu'il fonctionne ou non, la procédure porte le nom que tu veux.....
et là le code n'a rien à voir avec un vrai timer puisqu'il ne sera pas réellement fiable ni identique sur chaque PC. mais l'idée n'est pas mauvaise ^^

++
Prenez un instant pour répondre à ce sondage svp
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 sept. 2006 à 22:31
C'est pas faux ! 

Je suis resté ancré sur le timer à la vb6, mais c'est vrai que l'on peut donner ce nom à une procédure.

^^ la preuve 

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
8 sept. 2006 à 08:44
re, bonjour à tous,


Merci pour toute ces infos ca fonctionne très bien...


 mais pour ma curiosité... si ce n'est pas "clean" que faudrait-il envisager???

Bon courage et bon début de WE.... @++ Achi!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 sept. 2006 à 08:55
salut,
umm... tu peux tenter de faire un timer par API, dans quel cas je suis certain que notre ami Mortalino se fera une joie de t'orienter cet après-midi ^^

sinon regarde dans les 20 dernières sources, il y a un timer VB6 utilisable en VBA. reste à voir si tu peux (contexte que nous n'avons pas) ajouter cet ocx...

je ne vois même pas ce que tu veux vraiment faire avec ton code....
écrire en boucle un label dans un bouton... çà me dépasse ^^

++
Prenez un instant pour répondre à ce sondage svp
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
8 sept. 2006 à 09:09
salut,


ok je vais voir tout çà!


sinon mon application vous parait peut etre bizarre mais étant novice en prog je fais avec les moyens du bord .

l'intérêt était juste de faire clignoter le caption de mon bouton...

bon c'est vrai que ds le code que je vous ai filé j'avais allègé pour ne mettre juste ce qui m'intéressais... en fait je filtre un tableau excel en parallèle selon divers critères et le code que vous m'avez filé me sert juste à préciser que le filtre est encore actif tant que le bouton clignote... voilivoilou c'est tt simple.... peut etre un peu complexe pour ce que c'est, j'en conviens mais petit programmeur deviendra grand.... un jour.... bientôt.... enfin j'espère, !!!

Merci ++ Achi.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 sept. 2006 à 09:34
En vba, il y a plus simple :

regarde OnAction

++
0
cs_bipou Messages postés 61 Date d'inscription mercredi 14 janvier 2004 Statut Membre Dernière intervention 14 septembre 2006
7 sept. 2006 à 17:35
Bonjour,

je ne trouve pas cela très "clean" car par ce code tu rempli la pile de ta succession de procédure...

mais si tu insistes ceci fonctionne :

Public Sub Timer1_Timer()
If Worksheets(1).CommandButton3.ForeColor = &HFF& Then
Dim Start
    Start = Timer    ' Définit l'heure de début.
    Do While Timer < Start + 0.5
        DoEvents    ' Donne le contrôle à d'autres processus.        If Worksheets(1).CommandButton3.ForeColor &HFF& Then Worksheets(1).CommandButton3.Caption ""
    Loop
    Timer2_Timer
End If
End Sub


Public Sub Timer2_Timer()
If Worksheets(1).CommandButton3.ForeColor = &HFF& Then
Dim Start
    Start = Timer    ' Définit l'heure de début.
    Do While Timer < Start + 0.5
        DoEvents    ' Donne le contrôle à d'autres processus.
        Worksheets(1).CommandButton3.Caption = "Annulation"
    Loop
Timer1_Timer
End If
End Sub


Private Sub CommandButton1_Click()
    Worksheets(1).CommandButton3.ForeColor = &HFF&
Timer1_Timer
End Sub


Private Sub CommandButton3_Click()
Worksheets(1).CommandButton3.ForeColor = &H0&
Worksheets(1).CommandButton3.Caption = "Annulation"
End Sub




 
-2
Rejoignez-nous