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

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

Votre réponse

16 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 7 sept. 2006 à 22:13
3
Merci
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

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de PCPT
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Dernière intervention
20 octobre 2014
- 7 sept. 2006 à 16:49
0
Merci
Timer1.enable=false


ou


Timer1.interval =0







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

regarde OnAction

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