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 :

[VBA-E] Tracer le temps d'exécution d'une fonction


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut [VBA-E] Tracer le temps d'exécution d'une fonction
    Bonjour,

    Petite question sûrement toute simple pour les pros du vba, vous utilisez quoi comme fonction pour tracer le temps d'execution de vos codes VBA ???

    Time avant et apres l'execution ???

    Merci d'avance,
    "Ne soyez rien, devenez sans cesse"

  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
    Regarde

  3. #3
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par ouskel'n'or
    Regarde
    OK Thanks, j'avais parcouru le forum et les faqs vba, mais n'ai pas encore le réflexe d'aller voir dans la partie sources du forum.

    J'ai voulu adapter ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Public Function Duree_Execution(fonction As String) As String
     
        Dim debut As Double
        Dim fin As Double
        Dim duree As Double
     
        Dim min As Integer
        Dim sec As Integer
        Dim ms As Integer
     
        debut = GetTickCount&
        fonction
        fin = GetTickCount&
     
        duree = fin - debut
     
        min = Int(duree / 1000 / 60)
        sec = Int((duree / 1000) - (min * 60))
        ms = duree - (sec * 1000) - (min * 1000 * 60)
     
        Duree_Execution = min & ":" & Right("00" & sec, 2) & ":" & Right("000" & ms, 3)
     
    End Function
    Mais visiblement c'est pas possible de passer une fonction en argument d'une autre fonction, même en passant juste son nom dimensionné en string.. ???
    "Ne soyez rien, devenez sans cesse"

  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
    Pour lancer une fonction depuis une autre fonction, je ne sais pas (Je n'ai pas le tps de tester) mais si tu fais ton test départ sur la ligne précédant l'appel de la fonction et arrivée sur la ligne suivant le retour de la fonction, tu as bien le temps d'exécution de la fonction...
    Tout dépend du temps que tu veux mesurer, apparemment, c'est bien le temps d'exécution de la fonction...
    A+

    Tu as bien déclaré la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function GetTickCount& Lib "kernel32" ()

  5. #5
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par ouskel'n'or
    Pour lancer une fonction depuis une autre fonction, je ne sais pas (Je n'ai pas le tps de tester) mais si tu fais ton test départ sur la ligne précédant l'appel de la fonction et arrivée sur la ligne suivant le retour de la fonction, tu as bien le temps d'exécution de la fonction...
    Tout dépend du temps que tu veux mesurer, apparemment, c'est bien le temps d'exécution de la fonction...
    A+

    Tu as bien déclaré la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function GetTickCount& Lib "kernel32" ()
    No soucy

    Ca marche bien le code que tu m'a donné, j'essayais juste d'optimiser ton code.

    Finalement j'ai opté pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Declare Function GetTickCount& Lib "kernel32" ()
     
    Public Function Duree_Execution(debut As Double, fin As Double) As String
     
        Dim duree As Double
     
        Dim min As Integer
        Dim sec As Integer
        Dim ms As Integer
     
        duree = fin - debut
     
        min = Int(duree / 1000 / 60)
        sec = Int((duree / 1000) - (min * 60))
        ms = duree - (sec * 1000) - (min * 1000 * 60)
     
        Duree_Execution = min & ":" & Right("00" & sec, 2) & ":" & Right("000" & ms, 3)
     
    End Function
    Appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    g_debut = GetTickCount&
        ' Fonction dont on veut mesurer le temps d'execution
    g_fin = GetTickCount&
     
    MsgBox Duree_Execution(g_debut, g_fin)
    Avec g_debut et g_fin en variables globales.

    Faut écrire g_debut = ... , et g_fin = .... a chaque fois, mais bon vu que le passage de fonction en argument d'une fonction ne marche pas comme je le voulais, ca fera l'affaire.

    Merci encore,
    "Ne soyez rien, devenez sans cesse"

  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
    Avalon, c'est beau !
    Si c'est résolu, un peti clic sur résolu et ce sera résolu

  7. #7
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par ouskel'n'or
    Avalon, c'est beau !
    Si c'est résolu, un peti clic sur résolu et ce sera résolu
    C'est plus que beau Avalon, c'est culte... Et la B.O. ...
    "Ne soyez rien, devenez sans cesse"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Temps d'exécution d'une fonction
    Par Black.Rose dans le forum Débuter
    Réponses: 2
    Dernier message: 06/01/2009, 19h08
  2. Calculer le temps d'exécution d'une fonction
    Par ZAYDOUN dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/07/2008, 14h45
  3. mesurer le temps d'exécution d'une fonction
    Par Fonzy007 dans le forum C
    Réponses: 12
    Dernier message: 28/12/2006, 17h27
  4. Réponses: 10
    Dernier message: 28/04/2006, 16h36
  5. Réponses: 3
    Dernier message: 11/03/2006, 15h35

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