pascal719
Messages postés7Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention11 février 2009
-
9 févr. 2009 à 11:56
pascal719
Messages postés7Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention11 février 2009
-
11 févr. 2009 à 15:55
Bonjour,
Je me sert du code suivant pour faire tourner un chrono :
Private fin_chrono As Long
Private Sub CommandButton1_Click() 'Bouton top/depart
Dim Depart As Double
Dim Temps As Double
CommandButton1.Enabled = False
fin_chrono = 0
Depart = [now()]
Do While fin_chrono = 0
Temps = [now()] - Depart
If CheckBox1 = True Then
Label4.Caption = WorksheetFunction.Text(Temps, "mm:ss")
Else
Label4.Caption = WorksheetFunction.Text(Temps, "mm:ss")
End If
DoEvents
Loop
0
End Sub
Private Sub CommandButton4_Click() 'Bouton Fin
If fin_chrono = 0 Then
fin_chrono = 1
CheckBox1 = False
CommandButton1.Enabled = True
ElseIf fin_chrono = 1 Then
Label4.Caption = "00:00:00"
End If
End Sub
Or maintement je souhaite rajouter un bouton pause.
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 9 févr. 2009 à 16:01
Salut,
Sers toit d'une variable que tu passes à l'état TRUe avec ton bouton pause, qui une foi à TRUE sort de ta boucle de comptage....Pour reprendre ton comptage, repasse ta variable à False en prenant soin de récupérer le temps "mis en pause" pour reprendre ta boucle...
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 10 févr. 2009 à 09:50
Salut,
Bon, j'ai fait une petite bidouille sous VB6 qui fonctionne mais qui n'est pas optimisée, mais je pense que tu devrais pouvoir transcrire cela en VBA...car j'ai un doute pour : TIMER.
ouvre un projet, ajoute 3 boutons et un label et colle le code ci-dessous...donne à tes contrôles les même noms que je leurs donnent dans le code(en rouge).
Option Explicit
Dim bPause As Boolean 'Pause
Dim bStop As Boolean ' Fin
Private Sub Cmd_Go_Click()
'-* Déclaration
Dim dDepart As Double
Dim dValue As Double
pascal719
Messages postés7Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention11 février 2009 10 févr. 2009 à 12:06
Merci pour ta réponse, mais j'ai une erreur " incompatibilite de type" avec la ligne en jaune voici le code que j'ai installé:
Option Explicit
Dim bPause As Boolean 'Pause
Dim bStop As Boolean ' Fin
Private Sub Cmd_Go_Click()
'-* Déclaration
Dim dDepart As Double
Dim dValue As Double
'-* init
bStop = False
bPause = False
Encore:
dValue = 1
dDepart = Timer
'-* Boucle
Do While Timer < dDepart + dValue If (bPause True) Or (bStop True) Then GoTo Fin
DoEvents
Loop
'-* Mise à jour du label
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 11 févr. 2009 à 15:06
Re,
Le problème que tu soulèves est bizarre, car je viens de faire l'essai dans Excel et tout fonctionne....Regarde que tu as bien donné les bons noms au contrôles(propriété Name des contrôles ^^)....
pascal719
Messages postés7Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention11 février 2009 11 févr. 2009 à 15:40
Bonjour Exploreur,
Je sais d'où venait mon erreur, il me manque ce code :
Private Sub UserForm_Initialize()
Lbl_CHRONO.Caption = "00:00"
End Sub
pour que cela fonction.
Mais la commande stop-initialisation ne fonction pas chez moi.
Pourtant, je lui est donné le bon nom.
Voici le code :
Option Explicit
Dim bPause As Boolean 'Pause
Dim bStop As Boolean ' Fin
Private Sub UserForm_Initialize()
Lbl_CHRONO.Caption = "00:00"
End Sub
Private Sub Cmd_Go_Click()
'-* Déclaration
Dim dDepart As Double
Dim dValue As Double
'-* init
bStop = False
bPause = False
Encore:
dValue = 1
dDepart = Timer
'-* Boucle
Do While Timer < dDepart + dValue If (bPause True) Or (bStop True) Then GoTo Fin
DoEvents
Loop
'-* Mise à jour du label
Lbl_CHRONO.Caption = Format(CDate(DateAdd("S", 1, CDate(Lbl_CHRONO.Caption))), "HH:MM:SS")