IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

macro pour calculer la vitesse d'execution d'une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut macro pour calculer la vitesse d'execution d'une macro
    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.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    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
    Résultat en millisecondes
    A+

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    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.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    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
    Pourquoi ? Elle te plait pas ma solution ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    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...

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok. Alors ajoute ces lignes après la boucle
    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
    A+

  7. #7
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    rebonjour victorzecat

    pour répondre en lieu et place d'ucfoutu, suis ce lien.
    Cordialement

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    ==>> 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..

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    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

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bon...

    Alors un cadeau pour qui saura le prendre au vol et voir comment l'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim toto As Double
     toto = Now
     MsgBox toto
    hé ! hé !... et yen a plou de pwoblems avec minuit (pour les Machiavel et cie ... me dites pas qchui le seul, quand même...)

  11. #11
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Jour Bon
    Sans oublier L'api QueryPerformanceCounter pour des cas très particuliers et un peu extrêmes en termes de précision

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2014, 01h24
  2. Réponses: 2
    Dernier message: 17/03/2011, 21h45
  3. Macro pour calculer 5700 cellules
    Par Blord dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/10/2008, 20h14
  4. Réponses: 3
    Dernier message: 20/07/2007, 08h58
  5. Réponses: 10
    Dernier message: 15/06/2007, 23h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo