Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

chronométrer une macro en milisecondes

10 réponses
Avatar
Albert
Bonjour

Je désire chonométrer une procédure en millisecondes, actuellement avec
Time() cela ne donne qu'un résultats en secondes, alors la différence entre
début et fin est Zéro.
Voici ce que j'ai fait, j'ai ajouté au début et à la fin le code ,qui
affiche le résultats dans deux cellules format numérique à 20 décimales
L'affichage des variables TempDebut, TempsFin et TempsChrono ne fonctionne
pas.

'Attribute VB_Name = "Mod_MisaJour_Formules"
Sub MisaJourFormules()
' anciennement -jj_3()
Dim LaColonne As Long, Lacolonne2 As Long, LaLigne As Long, LaLigne2 As
Long, LaLigne3 As Long
Dim tempsdebut As Long, tempsfin As Long, tempschrono As Long

tempsdebut = Time()
Cells(607, 2).Select
Selection.Value = Time()
' Selection.Value = TempsDebut

' Début de la procédure

' Procédure

' Fin de la procedure

tempsfin = Time()
tempschrono = tempsfin - tempsdebut
' MsgBox (tempsfin - tempsdebut) * 1000000
Cells(606, 2).Select
Selection.Value = Time()
' Selection.Value = TempsFin
End Sub


Vos suggestions seront appréciées


--
albertri-at-videotron.ca.invalid

10 réponses

Avatar
MichD
Bonjour,

En début de macro, tu insères :

Dim T as double
T = Timer

'Le code à exécuter


'À la fin de la macro :
Msgbox Timer - T


MichD
--------------------------------------------------------------
Avatar
Albert
Merci MichD
cela répond à mon besoin
albert


"MichD" a écrit dans le message de
news:kf3mpm$deo$
Bonjour,

En début de macro, tu insères :

Dim T as double
T = Timer

'Le code à exécuter


'À la fin de la macro :
Msgbox Timer - T


MichD
--------------------------------------------------------------

Avatar
Albert
Rebonjour

Pour ma satisfaction personnelle le temps affiché est 0,125
Est-ce en millisecondes ou autre unité de mesure ?
Comment formater une cellule pour indiquer cela en millisecondes?
Merci
albert

"MichD" a écrit dans le message de
news:kf3mpm$deo$
Bonjour,

En début de macro, tu insères :

Dim T as double
T = Timer

'Le code à exécuter


'À la fin de la macro :
Msgbox Timer - T


MichD
Avatar
LSteph
Bonjour,

Si on renvoie directement timer dans une cellule avec le format 0,000 on a
un affichage avec la 3ème décimale correspondant au millième.
Tu peux ajouter plus de décimales si tu le souhaites,

l'unité située avant la virgule renvoyée par timer reste en secondes.

Toutefois la précision révélée par les décimales pourrait être ainsi
appréciée sur plusieurs cellules:

Sub test()
x = Now + TimeValue("00:00:03")
Do While x > Now
i = i + 1
Cells(i, 1) = Timer
Loop
End Sub

On remplit la colonne pendant 3 secondes . On remarque de suite que sur un
peu plus de 23850 lignes
(en fonction du code a executer et de la vitesse du pc à y pourvoir on
pourrait obtenir une étendue différente)
on obtient des répétitions à peu près régulières de la même valeur.
En filtrant sans doublons on en a en fait 633 occurences réparties ainsi sur
trois secondes, on constate que les valeurs répétées arrêtent leur précision
à la 9ème décimale et que le processeur (chez moi) a travaillé environ 38
fois plus vite que la précision offerte par timer .

Cordialement.

--
LSteph


"Albert" a écrit dans le message de
news:kf3pjl$lvd$
Rebonjour

Pour ma satisfaction personnelle le temps affiché est 0,125
Est-ce en millisecondes ou autre unité de mesure ?
Comment formater une cellule pour indiquer cela en millisecondes?
Merci
albert

"MichD" a écrit dans le message de
news:kf3mpm$deo$
Bonjour,

En début de macro, tu insères :

Dim T as double
T = Timer

'Le code à exécuter


'À la fin de la macro :
Msgbox Timer - T


MichD





Avatar
MichD
| le temps affiché est 0,125, est-ce en millisecondes
*** OUI

Voici comme fonctionne TIMER en VBA :

Timer retourne le nombre de secondes écoulées depuis
minuit de chaque jour. Le compteur est remis à zéro
à 11:59:59

Dans une journée, il y a 84600 secondes. (24h * 60min * 60s)

Comment calculer en heures / min / sec le décompte que
retourne TIMER?

Suppose que Timer retourne une valeur de 78500,256 secondes

Pour trouver le nombre d'heures :
= 60 minutes * 60 secondes = 3600 secondes dans une heure
x500,256/3600 = 21,8056267. Donc 21 heures complètes et
,8056267 d'une heure

À partir de la fraction d'une heure ,8056267 on peut trouver
le nombre de minutes que cela représente :
= 0,8056267 * 60 minutes = 48,3376.
Donc 48 minutes entières et 0,3376 dix millièmes d'une minute

Le même principe s'applique pour trouver le nombre de secondes
que représentes 0,3376 dix millièmes d'une minutes
= 0,3376 * 60 secondes = 20,256 secondes. Donc 20 secondes
complètes et 256 millièmes d'une seconde

Résultat : quand Timer indique : 78500,256 cela représente :
21h 48 min 20 secondes et 256 millièmes de seconde.

Si tu veux faire afficher les millièmes de seconde dans un
format de cellule : Format personnalisé : H:MM:SS,000

Dans une feuille de calcul, lorsque la cellule est au format
standard, si tu inscris 1 dans une cellule, cela signifie 1 journée
soit 24 heures ou 1440 minutes ou 84600 secondes. À partir
de cette information, le calcul est similaire. Si tu inscris 0,5 soit
la demie d'une journée, cela représente 12h:00:00.


MichD
--------------------------------------------------------------
Avatar
Albert
Merci LSteph
"LSteph" a écrit dans le message de
news:kf5d7v$eeb$

Très pratique pour comparer divers PC
Sur mon W7 j'obtiens 51428 lectures en 3 secondes, je vais comparer avec le
Vista qui me cause problème.
Merci
Albert

Bonjour,

Si on renvoie directement timer dans une cellule avec le format 0,000 on a
un affichage avec la 3ème décimale correspondant au millième.
Tu peux ajouter plus de décimales si tu le souhaites,

l'unité située avant la virgule renvoyée par timer reste en secondes.

Toutefois la précision révélée par les décimales pourrait être ainsi
appréciée sur plusieurs cellules:

Sub test()
x = Now + TimeValue("00:00:03")
Do While x > Now
i = i + 1
Cells(i, 1) = Timer
Loop
End Sub

On remplit la colonne pendant 3 secondes . On remarque de suite que sur
un peu plus de 23850 lignes
(en fonction du code a executer et de la vitesse du pc à y pourvoir on
pourrait obtenir une étendue différente)
on obtient des répétitions à peu près régulières de la même valeur.
En filtrant sans doublons on en a en fait 633 occurences réparties ainsi
sur trois secondes, on constate que les valeurs répétées arrêtent leur
précision à la 9ème décimale et que le processeur (chez moi) a travaillé
environ 38 fois plus vite que la précision offerte par timer .

Cordialement.

--
LSteph


"Albert" a écrit dans le message de
news:kf3pjl$lvd$
Rebonjour

Pour ma satisfaction personnelle le temps affiché est 0,125
Est-ce en millisecondes ou autre unité de mesure ?
Comment formater une cellule pour indiquer cela en millisecondes?
Merci
albert

"MichD" a écrit dans le message de
news:kf3mpm$deo$
Bonjour,

En début de macro, tu insères :

Dim T as double
T = Timer

'Le code à exécuter


'À la fin de la macro :
Msgbox Timer - T


MichD








Avatar
Albert
Un grand MERCI
"MichD" a écrit dans le message de
news:kf5e40$gtl$

Merci de ces savantes explications, avec cela je crois que je vais pouvoir
corriger mon code qui cause problème.
Un grand merci
Albert


| le temps affiché est 0,125, est-ce en millisecondes
*** OUI

Voici comme fonctionne TIMER en VBA :

Timer retourne le nombre de secondes écoulées depuis
minuit de chaque jour. Le compteur est remis à zéro
à 11:59:59

Dans une journée, il y a 84600 secondes. (24h * 60min * 60s)

Comment calculer en heures / min / sec le décompte que
retourne TIMER?

Suppose que Timer retourne une valeur de 78500,256 secondes

Pour trouver le nombre d'heures :
= 60 minutes * 60 secondes = 3600 secondes dans une heure
x500,256/3600 = 21,8056267. Donc 21 heures complètes et
,8056267 d'une heure

À partir de la fraction d'une heure ,8056267 on peut trouver
le nombre de minutes que cela représente :
= 0,8056267 * 60 minutes = 48,3376.
Donc 48 minutes entières et 0,3376 dix millièmes d'une minute

Le même principe s'applique pour trouver le nombre de secondes
que représentes 0,3376 dix millièmes d'une minutes
= 0,3376 * 60 secondes = 20,256 secondes. Donc 20 secondes
complètes et 256 millièmes d'une seconde

Résultat : quand Timer indique : 78500,256 cela représente :
21h 48 min 20 secondes et 256 millièmes de seconde.

Si tu veux faire afficher les millièmes de seconde dans un
format de cellule : Format personnalisé : H:MM:SS,000

Dans une feuille de calcul, lorsque la cellule est au format
standard, si tu inscris 1 dans une cellule, cela signifie 1 journée
soit 24 heures ou 1440 minutes ou 84600 secondes. À partir
de cette information, le calcul est similaire. Si tu inscris 0,5 soit
la demie d'une journée, cela représente 12h:00:00.


MichD
--------------------------------------------------------------

Avatar
LSteph
Bonjour MD,

:-) il me semble que dans ce cas c'est en secondes!!

non d'ailleurs j'en suis sûr et tu le dis toi même >"Timer retourne le
nombre de secondes...

lorsque Excel affiche le timer avec trois chiffres après la virgule
L'unité de mesure du timer c'est en secondes
0 secondes et 125 millièmes
c'est seulement à précision de 3 décimales que l'on apprécie le millième.
les 0,125 secondes affichées par le timer représentent 125 millièmes de
seconde.
S'il affichait 125 ce serait en millièmes.
...et la précision pourrait être poussée un peu plus loin, sauf et cf. la
réserve formulée dans mon post.

Cordialement.

--
LSteph



"MichD" a écrit dans le message de
news:kf5e40$gtl$
| le temps affiché est 0,125, est-ce en millisecondes
*** OUI

Voici comme fonctionne TIMER en VBA :

Timer retourne le nombre de secondes écoulées depuis
minuit de chaque jour. Le compteur est remis à zéro
à 11:59:59

Dans une journée, il y a 84600 secondes. (24h * 60min * 60s)

Comment calculer en heures / min / sec le décompte que
retourne TIMER?

Suppose que Timer retourne une valeur de 78500,256 secondes

Pour trouver le nombre d'heures :
= 60 minutes * 60 secondes = 3600 secondes dans une heure
x500,256/3600 = 21,8056267. Donc 21 heures complètes et
,8056267 d'une heure

À partir de la fraction d'une heure ,8056267 on peut trouver
le nombre de minutes que cela représente :
= 0,8056267 * 60 minutes = 48,3376.
Donc 48 minutes entières et 0,3376 dix millièmes d'une minute

Le même principe s'applique pour trouver le nombre de secondes
que représentes 0,3376 dix millièmes d'une minutes
= 0,3376 * 60 secondes = 20,256 secondes. Donc 20 secondes
complètes et 256 millièmes d'une seconde

Résultat : quand Timer indique : 78500,256 cela représente :
21h 48 min 20 secondes et 256 millièmes de seconde.

Si tu veux faire afficher les millièmes de seconde dans un
format de cellule : Format personnalisé : H:MM:SS,000

Dans une feuille de calcul, lorsque la cellule est au format
standard, si tu inscris 1 dans une cellule, cela signifie 1 journée
soit 24 heures ou 1440 minutes ou 84600 secondes. À partir
de cette information, le calcul est similaire. Si tu inscris 0,5 soit
la demie d'une journée, cela représente 12h:00:00.


MichD
--------------------------------------------------------------

Avatar
MichD
Bonjour,

Je ne sais pas ce que tu tentes de démontrer, mais
j'expliquais seulement au demandeur la valeur que
retourne "TIMER" et comment arriver à manipuler
cette donnée.

Le demandeur semble satisfait des explications!

MichD
--------------------------------------------------------------
Avatar
LSteph
... rien à tenter je ne sais pourquoi peut-être je m'égare, j'ai juste juste
cru devoir appuyer un peu plus que timer est bien en secondes.
..oui oui t'inquiète , pour les explications il a même redit merci

;-) Amicales Salutations

--
LSteph


"MichD" a écrit dans le message de
news:kf5m7u$7uk$
Bonjour,

Je ne sais pas ce que tu tentes de démontrer, mais
j'expliquais seulement au demandeur la valeur que
retourne "TIMER" et comment arriver à manipuler
cette donnée.

Le demandeur semble satisfait des explications!

MichD
--------------------------------------------------------------