Arrêter un timer ds une routine [Résolu]

cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 7 sept. 2006 à 16:45 - Dernière réponse : mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention
- 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!!
Afficher la suite 

16 réponses

Répondre au sujet
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 7 sept. 2006 à 22:13
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
BasicInstinct 1471 Messages postés mardi 5 février 2002Date d'inscription 20 octobre 2014 Dernière intervention - 7 sept. 2006 à 16:49
0
Utile
Timer1.enable=false


ou


Timer1.interval =0







BasicInstinct
Commenter la réponse de BasicInstinct
cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 7 sept. 2006 à 17:01
0
Utile
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
Commenter la réponse de cs_Achi
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 7 sept. 2006 à 17:07
0
Utile
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"
<!--
Commenter la réponse de mortalino
cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 7 sept. 2006 à 17:12
0
Utile
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!!
Commenter la réponse de cs_Achi
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 7 sept. 2006 à 17:23
0
Utile
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"
<!--
Commenter la réponse de mortalino
cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 7 sept. 2006 à 17:26
0
Utile
re,


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


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

Achi...
Commenter la réponse de cs_Achi
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 7 sept. 2006 à 17:33
0
Utile
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"
<!--
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 7 sept. 2006 à 22:21
0
Utile
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"
<!--
Commenter la réponse de mortalino
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 7 sept. 2006 à 22:26
0
Utile
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
Commenter la réponse de PCPT
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 7 sept. 2006 à 22:31
0
Utile
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"
<!--
Commenter la réponse de mortalino
cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 8 sept. 2006 à 08:44
0
Utile
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!
Commenter la réponse de cs_Achi
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 8 sept. 2006 à 08:55
0
Utile
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
Commenter la réponse de PCPT
cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 8 sept. 2006 à 09:09
0
Utile
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.
Commenter la réponse de cs_Achi
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 8 sept. 2006 à 09:34
0
Utile
En vba, il y a plus simple :

regarde OnAction

++
Commenter la réponse de mortalino
cs_bipou 61 Messages postés mercredi 14 janvier 2004Date d'inscription 14 septembre 2006 Dernière intervention - 7 sept. 2006 à 17:35
-2
Utile
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




 
Commenter la réponse de cs_bipou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.