OVH Cloud OVH Cloud

temps d'execution

8 réponses
Avatar
Emcy
bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer : comment
faire ?

8 réponses

Avatar
Oliv'
Emcy que je salut a écrit dans

bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer :
comment faire ?



sub toto ()
Dim ttt As Double
[instructions]
MsgBox CStr(Time - ttt)
End Sub

Merci à LSTEPH popur ce code condensé.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
Emcy
merci mais tu as du oublier quelque chose

remarque : il faudrait que je puisse mesurer au dixieme de seconde

"Oliv'" <(supprimerceci) a écrit dans le
message de news:

Emcy que je salut a écrit dans

bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer :
comment faire ?



sub toto ()
Dim ttt As Double
[instructions]
MsgBox CStr(Time - ttt)
End Sub

Merci à LSTEPH popur ce code condensé.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




Avatar
Daniel
Bonjour.
Essaie :

Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub Test()
Dim Val As Long
Val = timeGetTime()
Range("A1:IV60000").Value = 1 'ou n'importe quel autre code
Val = timeGetTime() - Val
MsgBox Val & " millisecondes"
End Sub

Cordialement.
Daniel

"Emcy" a écrit dans le message de news:

bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer : comment
faire ?



Avatar
Emcy
la fonction timeGetTime n'est pas reconnue ...

"Daniel" a écrit dans le message de news:
u$
Bonjour.
Essaie :

Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub Test()
Dim Val As Long
Val = timeGetTime()
Range("A1:IV60000").Value = 1 'ou n'importe quel autre code
Val = timeGetTime() - Val
MsgBox Val & " millisecondes"
End Sub

Cordialement.
Daniel

"Emcy" a écrit dans le message de news:

bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer :
comment faire ?







Avatar
anonymousA
Bonjour,

créer un module de classe appelé CHighResTimer

écrire dans le module de classe

Option Explicit

'How many times per second is the counter updated?
Private Declare Function QueryFrequency Lib "kernel32" _
Alias "QueryPerformanceFrequency" ( _
lpFrequency As Currency) As Long

'What is the counter's value
Private Declare Function QueryCounter Lib "kernel32" _
Alias "QueryPerformanceCounter" ( _
lpPerformanceCount As Currency) As Long


'Variables to store the counter information
Dim mcyFrequency As Currency
Dim mcyOverhead As Currency
Dim mcyStarted As Currency
Dim mcyStopped As Currency


Private Sub Class_Initialize()
Dim cyCount1 As Currency, cyCount2 As Currency

'Get the counter frequency
QueryFrequency mcyFrequency

'Call the hi-res counter twice, to check how long it takes
QueryCounter cyCount1
QueryCounter cyCount2

'Store the call overhead
mcyOverhead = cyCount2 - cyCount1
End Sub


Public Sub StartTimer()
'Get the time that you started
QueryCounter mcyStarted
End Sub


Public Sub StopTimer()
'Get the time that you stopped
QueryCounter mcyStopped
End Sub


Public Property Get Elapsed() As Double
Dim cyTimer As Currency

'Have you stopped or not?
If mcyStopped = 0 Then
QueryCounter cyTimer
Else
cyTimer = mcyStopped
End If

'If you have a frequency, return the duration, in seconds
If mcyFrequency > 0 Then
Elapsed = (cyTimer - mcyStarted - mcyOverhead) / mcyFrequency
End If
End Property

Puis dans la procédure dont tu veux mesurer le temps écrire au début
de celle-ci

Dim obTimer As CHighResTimer

Set obTimer = New CHighResTimer

obTimer.StartTimer

et à la fin la procédure dont tu veux mesurer le temps écrire

obTimer.StopTimer
Debug.Print "L'opération totale 2 a pris " & obTimer.Elapsed & "
seconds"

Ce faisant, tu auras alors dans la fenêtre d'exécution le temps
passé par la macro pour tourner.

A+
Avatar
Daniel
Tu es sous Windows ?
Daniel
"Emcy" a écrit dans le message de news:

la fonction timeGetTime n'est pas reconnue ...

"Daniel" a écrit dans le message de news:
u$
Bonjour.
Essaie :

Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub Test()
Dim Val As Long
Val = timeGetTime()
Range("A1:IV60000").Value = 1 'ou n'importe quel autre code
Val = timeGetTime() - Val
MsgBox Val & " millisecondes"
End Sub

Cordialement.
Daniel

"Emcy" a écrit dans le message de news:

bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer :
comment faire ?











Avatar
Emcy
oui

mais avec la fonction timer, ça à l'air de marcher

dim toto as single
dim tata as single
toto = timer
....
tata = timer
msgbox(str(tata-toto))


"Daniel" a écrit dans le message de news:

Tu es sous Windows ?
Daniel
"Emcy" a écrit dans le message de news:

la fonction timeGetTime n'est pas reconnue ...

"Daniel" a écrit dans le message de news:
u$
Bonjour.
Essaie :

Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub Test()
Dim Val As Long
Val = timeGetTime()
Range("A1:IV60000").Value = 1 'ou n'importe quel autre code
Val = timeGetTime() - Val
MsgBox Val & " millisecondes"
End Sub

Cordialement.
Daniel

"Emcy" a écrit dans le message de news:

bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer :
comment faire ?















Avatar
Oliv'
Effectivement !
y avait un :
ttt = Time
après le dim
mais cela donne au mini des secondes


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Emcy que je salut a écrit dans
e%
merci mais tu as du oublier quelque chose

remarque : il faudrait que je puisse mesurer au dixieme de seconde

"Oliv'" <(supprimerceci) a écrit dans le
message de news:

Emcy que je salut a écrit dans

bonjours,

je voudrais mesurer le temps que prend une macro pour s'executer :
comment faire ?



sub toto ()
Dim ttt As Double
[instructions]
MsgBox CStr(Time - ttt)
End Sub

Merci à LSTEPH popur ce code condensé.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~