XL 2013 Aide Chronométre

sihamidi

XLDnaute Occasionnel
Bonjour,

Si vous le permettez
je veux avoir un chronomètre ou compteur en milliseconde dans la cellule A1

qui lorsque le chronomètre coïncide avec un nombre que j'ai mis dans la cellule G5
"exemple 80 "

Le chronomètre s’arrête automatiquement.

merci
 

Dranreb

XLDnaute Barbatruc
bonsoir.
Vous pouvez utiliser ces api pour récupérer du temps avec beaucoup de précision :
VB:
Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Sur ma machine après QueryPerformanceFrequency F, F vaut 312,5068 ce qui signifie que QueryPerformanceCounter C fait avancer C de 3125068 cycles à chaque seconde.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
J'ai ça dans un module de comparaison des performances de deux systèmes d'indexation :
VB:
Option Explicit
Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (x As Currency) As Boolean
Private Declare Function QueryPerformanceCounter Lib "Kernel32" (x As Currency) As Boolean

Sub Test()
Dim LR&, NbVal&, TV(), LE&, C&, TX() As Long, QPF As Currency, QPCDéb As Currency, QPCFin As Currency
QueryPerformanceFrequency QPF
[B3:C23].Value = Empty
For LR = 3 To 23
   NbVal = 3125 * 2 ^ ((LR - 7) / 2)
   ReDim TV(1 To NbVal, 1 To 3)
   For LE = 1 To NbVal: For C = 1 To 3: TV(LE, C) = Int(Exp(Rnd * 3)): Next C, LE
  
   Cells(LR, 1) = NbVal
   QueryPerformanceCounter QPCDéb
   TbIdxTVcd TV, 1, 2, 3
   QueryPerformanceCounter QPCFin
   Cells(LR, 2) = (QPCFin - QPCDéb) / QPF
   DoEvents
  
   QueryPerformanceCounter QPCDéb
   IndexerParFusion TX, TV, 1, 2, 3
   QueryPerformanceCounter QPCFin
   Cells(LR, 3) = (QPCFin - QPCDéb) / QPF
   DoEvents
   Next LR
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Merci Modeste geedee,

démarre à zéro et sont millisecondes

et se rafraichissent tous les millisecondes
impossible ... c'est inférieur à la fréquence d'interruption EXCEL/Systeme
VB:
Public Declare Function GetTickCount Lib "kernel32" () As Long
Sub mesureMillis()
StartTime = GetTickCount
'*********************do some process here************************
EndTime = GetTickCount
MsgBox "Time = " & EndTime - StartTime
end sub

The resolution of the GetTickCount function is limited to the resolution of the system timer, which is typically in the range of 10 milliseconds to 16 milliseconds.
 

Dranreb

XLDnaute Barbatruc
Si on veut une précision supérieure aux 10 à 16 millisecondes il faut écrire une boucle qui tourne en permanence en surveillant le Currency rendu par QueryPerformanceCounter
On peut éventuellement mettre un DoEvents dans la boucle s'il faut pouvoir faire d'autres choses dans Excel pendant ce temps.

Remarque: la mise à jour d'une cellule pourrait prendre plus d'une milliseconde. Il vaudrait mieux éviter de la faire trop souvent.

Information:
QueryPerformanceFrequency QPF donne la différence des valeurs données par 2 QueryPerformanceCounter espacés d'exactement 1 seconde.
Après QueryPerformanceCounter QPCDéb
et : QueryPerformanceCounter QPCFin
(QPCFin - QPCDéb) / QPF donne donc la durée en secondes écoulée entre les deux QueryPerformanceCounter.
et (QPCFin - QPCDéb) * 1000# / QPF le donnerait en millisecondes.
 
Dernière édition:

sihamidi

XLDnaute Occasionnel
Bonjour


peut être je me suis mal exprimé


je veux un chrono qui démarre à zéro dans la cellule a1


et tourne avec les 1/100 de seconde

et un fois le chrono atteint la valeur indiquée dans la cellule g3 s’arrête automatiquement .


lorsque on change la valeur de g3 il redémarre à zéro et s’arrête au nouvelle valeur de g3


c'est pour Un tableau de bord que je veux cet indicateur




cordialement
 

sihamidi

XLDnaute Occasionnel
Bonjour


peut être je me suis mal exprimé


je veux un chrono qui démarre à zéro dans la cellule a1


et tourne avec les 1/100 de seconde

et un fois le chrono atteint la valeur indiquée dans la cellule g3 s’arrête automatiquement .


lorsque on change la valeur de g3 il redémarre à zéro et s’arrête au nouvelle valeur de g3


c'est pour Un tableau de bord que je veux cet indicateur




cordialement
 

Dranreb

XLDnaute Barbatruc
Ce que je n'arrive pas bien à comprendre c'est à quoi ça sert vu qu'on sait d'avance que lorsque le décompte sera terminé la cellule A1 affichera au final la même chose que G3. Quant à y afficher tous les centièmes de secondes le temps écoulé c'est à mon avis hors de question. Tous les 10ièmes de secondes à la rigueur.

Maintenant je vois qu'il y a aussi un bouton arrêter. S'il sert à interrompre le décompte, on peut alors laisser en A1 le temps écoulé au millième de seconde près. (voire à la µs près)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG