Je cherche à créer une macro permettant de calculer la vitesse d'execution d'une autre macro, ou bien d'une fonction excel (par exemple somme(si)
Etant debutant je ne sais pas par ou commencer... avez vous des idées?
Merci pour votre contribution.
Je cherche à créer une macro permettant de calculer la vitesse d'execution d'une autre macro, ou bien d'une fonction excel (par exemple somme(si)
Etant debutant je ne sais pas par ou commencer... avez vous des idées?
Merci pour votre contribution.
Résultat en millisecondes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Public Declare Function GetTickCount& Lib "kernel32" () Sub MesureDuTempsQuiPasse() Dim Départ As Double, i As Long Départ = GetTickCount& 'Pour simuler le code de ta macro For i = 1 To 100000 DoEvents Next Durée = GetTickCount& - Départ End sub
A+
Bonjour,
Si la durée d'exécution de ta macro est supérieure ou égale à 20 millisecondes, il te suffira d'utiliser la fonction Timer...
Une discussion à ce sijet a été ouverte hier et l'un des messages montre comment calculer une durée à l'aide de la fonction Timer.
pour ma part les 2 solutions me plaisent...
@ucfoutu= peux tu me donner le lien de la discussion sur la fonction timer?
@ouskel'n'or= j'ai placé mon sub dans la formule de calcul de temps, de même j'ai placé la fonction dans une cellule de ma feuille; toutefois le résultat de cette dernière me renvoit un nombre à 9 chiffres (alors que mon code s'éxécute en moins d'1 seconde)... je ne comprend pas...
Ok. Alors ajoute ces lignes après la boucle
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 arrivée = GetTickCount& Durée = arrivée - Départ MsgBox Durée mn = Int(Durée / 1000 / 60) sd = Int((Durée / 1000) - (mn * 60)) ms = Durée - (sd * 1000) - (mn * 1000 * 60) tps = mn & ":" & sd & ":" & ms MsgBox tps
rebonjour victorzecat
pour répondre en lieu et place d'ucfoutu, suis ce lien.
Cordialement
==>> Ousk : bien sûr que ta méthode me plait !!! Ta méthode, de surcroît, permet de ne pas tomber dans le piège du passage par Minuit... (j'essayais simplement de montrer que VB sait se défendre seul).
===>> fred95200 : merci (j'aurais toutefois personnellement laissé victorzecat apprendre à chercher un peu... les cailles ne doivent pas tomber toutes rôties du ciel ... mais tu es sympa -plus que moi -, c'est vrai)
Amitiés à ousk et à Fred, mais également à Victor..
Merci à tous pour vos réponses:
@ousk: ta macro fonctionne parfaitement
@fred: merci pour le lien et tes autres réponses
@ucfoutu: merci pour ta solution (ps: il est vrai que j'ai demandé l'adresse du lien par facilité, toutefois maintenant je suis sure de tomber sur la bonne discussion. Ce qui est vrai pour moi, sera aussi vrai pour ceux qui souhaitent approfondir ta solution).
Amitiés à tous
Bon...
Alors un cadeau pour qui saura le prendre au vol et voir comment l'utiliser :
hé ! hé !... et yen a plou de pwoblems avec minuit (pour les Machiavel et cie ... me dites pas qchui le seul, quand même...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim toto As Double toto = Now MsgBox toto
Jour Bon
Sans oublier L'api QueryPerformanceCounter pour des cas très particuliers et un peu extrêmes en termes de précision
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager