Chronomètre et interaction
Bonjour,
Dans un fichier Excel j'ai intégré un chronomètre avec bouton Start Stop Reset et les fonctions associées:
Private Sub START_TIMER()
If Worksheets("Game").Cells(7, 53) = "Stopped" Then
s = "00:" & Format(Worksheets("Game").Cells(4, 53), "00") & ":" & Format(Worksheets("Game").Cells(5, 53), "00")
Else
s = "00:" & Format(Worksheets("Game").Cells(1, 53), "00") & ":" & Format(Worksheets("Game").Cells(2, 53), "00")
End If
Worksheets("Game").Cells(7, 53) = "Started"
EndTime = Now + TimeValue(s)
Worksheets("Game").Cells(12, 4) = s
x:
VBA.DoEvents
If Worksheets("Game").Cells(7, 53) = "Stopped" Then Exit Sub
CurrentTime = Now
Diffm = Int(DateDiff("s", CurrentTime, EndTime) / 60)
diffs = DateDiff("s", CurrentTime, EndTime) - Diffm * 60
Worksheets("Game").Cells(4, 53) = Diffm
Worksheets("Game").Cells(5, 53) = diffs
s = "00:" & Format(Diffm, "00") & ":" & Format(diffs, "00")
Worksheets("Game").Cells(12, 4) = s
End If
GoTo x
End Sub
Private Sub STOP_TIMER()
Worksheets("Game").Cells(7, 53) = "Stopped"
End If
End Sub
Private Sub RESET_TIMER()
Worksheets("Game").Cells(7, 53) = "Over"
s = "00:" & Format(Worksheets("Game").Cells(1, 53), "00") & ":" & Format(Worksheets("Game").Cells(2, 53), "00")
Worksheets("Game").Cells(12, 4) = s
Worksheets("Game").Cells(12, 4).Interior.ColorIndex = 2
Worksheets("Game").Cells(12, 4).Font.ColorIndex = 1
End Sub
Il fonctionne bien. L'ennui c'est que dès que j'intéragis sur la feuille Excel (pour écrire un truc dans une cellule par exemple), il s'arrête, et quand je rappuie sur Start et agit comme le bouton Reset.
Vous savez ce que je peux faire pour éviter ça? Merci d'avance des retours.
Bonsoir,
en règle général, le fait d'entrer dans une cellule pour y inscrire une donnée quelconque stoppe le fonctionnement du VBA.
Comme votre chronomètre est basé sur une boucle VBA, malgré le DoEvents, celui-ci s'arrête, l'action Reset en appuyant sur Start est certainement du au valeur dans les cellules "mémoires" qui ne correspondent pas aux valeurs qui doivent s'y trouver suite à un "Stop" réglementaire...
Pour votre chrono, il faudrait peut être passer par un Application.Ontime, mais celui-ci a une précision de la seconde... Mais je crois bien qu'il tourne malgré les saisies.
@ bientôt
LouReeD