N'étant pas ingénieur informatichien, je vais essayer de t'expliquer le fonctionnement comme moi je le comprend, si je dis une trop grosse boulette ya bien quelqu'un qui me reprendra.
QueryPerformanceCounter ne compte pas les secondes écoulées mais le nombre de cycle d'horloge écoulé de ton microprocesseur.
QueryPerformanceFrequency donne le nombre de cycle d'horloge pour une seconde.
Donc entre QueryPerformanceCounter Debut et Fin on a un nombre de cycle que l'on divise par QueryPerformanceFrequency pour convertir ce nombre en secondes.
Si je comprend bien tu souhaites calculer les temps d'utilisation cumulés de la macro.
Une solution éventuelle en déclarant une variable de type Public
Avant la fermeture du classeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean Public Tproc As Date Sub TaMacro() Dim Debut As Currency, Fin As Currency, Freq As Currency QueryPerformanceCounter Debut '... 'ton code '... QueryPerformanceCounter Fin QueryPerformanceFrequency Freq Tproc = Tproc + ((Fin - Debut) / Freq) End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "Temps d'utilisation de la procédure = " & Format(Tproc, "00:00:00.00") End Sub
Partager