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 :

Temps d'exécution macro en millisecondes


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut Temps d'exécution macro en millisecondes
    Bonjour, je cherche à chronométrer le déroulement d'une boucle en millisecondes mais ne trouve rien sur internet pour y parvenir.

    La solution qui devrait apparemment aller serait l'utilisation de Timer en début de code puis "Timer2 - Timer" juste après mon For avec Format((Timer2 - Timer) / 86400, "hh:mm:ss,sss") or ceci me retourne systématiquement 00:00:00,000, je tente: Format....hh:mm:ss,ms et je récupère systématiquement 00:00:01,121?????

    Si quelqu'un peut me dépanner, merci beaucoup

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
       Dim deb As Double, fin As Double
       deb = Timer * 1000#
             .... Procédure à chronométrer ....
       fin = Timer * 1000#
       Debug.Print fin - deb
    End Sub

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Vu, Menhir
    Une question pour une autre manière de procéder.

    D'après les hypothèses de notre ami.

    Si l'on considère la procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub essai()
     
    Dim T As Single
    T = Timer
    'la procédure
     
    Dim strdurée As String
    strdurée = Format(Timer - T, "00:00:00.00")
     
    End Sub
    Trivialement.
    L'ubound d'un Split "." sur la chaîne de caractères "strdurée" suffirait, non?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Sincèrement, pour obtenir une valeur en millisecondes, je ne vois pas l'intérêt d'utiliser la fonction Format...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Si justement, je voudrais récupérer un format hh:mm:ss.sss plus lisible, ton code renvoie une valeur décimale peu parlante pour moi

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Si justement, je voudrais récupérer un format hh:mm:ss.sss plus lisible, ton code renvoie une valeur décimale peu parlante pour moi
    De deux choses l'une :
    soit la valeur renvoyée est inférieure à la minute et dans cas, je ne vois pas ce qu'apporte de mettre systématiquement devant "00:00:"
    soit la valeur renvoyée est supérieure à la minute et dans ce cas, la précision de la milliseconde semble tout à fait disproportionnée.

    Dans tous les cas, je ne trouve pas de 12345 soit "moins parlant" que 00:00:12.345.

    Mais... bon... les goûts et les couleurs...

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Rien n'est plus décevant de se montrer poli, aimable et de se faire envoyer sur les roses.
    Et ce sans que l'on daigne se pencher sur la moindre réponse.
    Pas grave...(je laisse les lecteurs juger)

    Kestion,

    Si tu utilises ce processus, tu peux inclure au format des libellés heures minutes, à conditions d'utiliser des doubles doubles quottes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "00""heures""00""minutes""00.00""secondes"""

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    C'est une boucle, chaque élément est très court mais au final elle peut tourner plusieurs heures

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Merci Marcel G, moi j'ai le projet de rendre obligatoire l'indication horaire en patates/basket car je ne vois pas l'intérêt de compter en heures/minutes, Menhir m'a fait perdre 5 patates et 10 baskets!!!!!!!!

    Je place ton code à la place de "kode" dans:

    format(XXX, "kode")

    C'est bien cela?

  10. #10
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Laisse tomber Kestion.
    Pour ma part, je ne me ferai plus avoir.
    "On" rappelle souvent les règles du Forum.
    J'ai peut-être besoin de lunettes, mais la courtoisie et l'amabilité, sauf erreur, en font partie.
    Or, la différence de ton entre les post #3 et #4 a de quoi laisser songeur.

    Pour répondre à ta question.
    Oui, tu peux placer ce libellé dans ton code.

    A bientôt.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Format((fin - deb) / 8640000, "00""heures""00""minutes""00.00""secondes""")
    Me donne toujours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    00heures00minutes00,00secondes

  12. #12
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    J'ai corrigé pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Format(fin - deb, "00""heures""00""minutes""00.00""secondes""")
    J'obtiens:
    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
    00heures00minutes00,00secondes
    00heures01minutes05,47secondes
    00heures02minutes03,13secondes
    00heures02minutes77,34secondes
    00heures03minutes55,47secondes
    00heures04minutes33,59secondes
    00heures05minutes11,72secondes
    00heures05minutes89,84secondes
    00heures06minutes67,97secondes
    00heures07minutes46,09secondes
    00heures08minutes24,22secondes
    00heures09minutes17,97secondes
    00heures09minutes96,09secondes
    00heures10minutes89,84secondes
    00heures11minutes83,59secondes
    Qui va trop vite me semble t il: 11 minute de l aligne 1 à la ligne 14 alors que pour tester je ne fais qu'un Cells(i, j ).Select......

  13. #13
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Sauf erreur, la division est inopportune.

    En début de code
    En fin de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    format(Timer -déb,"00...

  14. #14
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Format((fin - deb) / 86400, "00""heures""00""minutes""00.00""secondes""")
    renvoie:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    00heures00minutes00,00secondes
    00heures00minutes00,00secondes
    00heures00minutes00,00secondes
    00heures00minutes00,00secondes
    00heures00minutes00,00secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,01secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,02secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,03secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,04secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,05secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,06secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,07secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,08secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,09secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,10secondes
    00heures00minutes00,11secondes
    00heures00minutes00,11secondes
    00heures00minutes00,11secondes
    00heures00minutes00,11secondes
    00heures00minutes00,11secondes
    Il me semble que c'est "le bon rythme" mais les millisecondes ne s'affichent pas

  15. #15
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Il faudrait voir le code complet.

    Cela dit, les Select et autres Activate, tu peux t'en passer.

  16. #16
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Sans division, je laisse tourner mon code 10 secondes et j'ai des minutes renvoyées????

  17. #17
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    C'est juste pour tester:


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub DEUXBOUCLEA()
     
    Dim i As Integer, DerCol As Double, j As Integer, DerLig As Double, deb As Double, fin As Double
     
       deb = Timer * 1000#
     
     
    DerLig = Range("A200000").End(xlUp).Row
    DerCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
     
    For i = 45 To 60
     
    For j = 2 To DerCol
     
    fin = Timer * 1000#
       Debug.Print Format((fin - deb) / 86400, "00""heures""00""minutes""00.00""secondes""")
     
     
     
    Cells(i, j).Select
     
    Cells(i, j).Copy Cells(i, j + 1)
     
    Cells(i, j).Value = Cells(i, j).Value
     
     
     
    Next j
     
    Next i
     
    End Sub

  18. #18
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Si tu codes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Format((fin - deb) / 86400, "00"" heures ""00"" minutes ""00.0000"" secondes """)
    Les millièmes de secondes n'apparaissent-ils pas?
    C'est la question que je posais, avant de me faire envoyer balader.

    Je dois partir, excuse-moi.

    Si d'autres collègues ne se sont pas manifestés, nous reprendrons lundi.

    D'ici là, bon week-end à toi. Bon week-end au Forum.

  19. #19
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Parfait avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format((fin - deb), "00"":""00"":""00.00""""")

  20. #20
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    En reprenant, en effet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub essai()
     
    Dim T As Single
    T = Timer
    'la procédure
     
    Dim strdurée As String
    strdurée = Format(Timer - T, "00:00:00.00")
     
    End Sub
    Sans et sans division

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Temps d'exécution macro trop long
    Par STUDIO101 dans le forum Excel
    Réponses: 4
    Dernier message: 19/02/2019, 19h10
  2. Optimisation temps d'exécution macro
    Par julio44 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2011, 13h14
  3. Temps d'exécution macro s'allonge avec le temps
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/06/2011, 14h48
  4. Allongement d'uin temps d'exécution d'une macro
    Par avanrill dans le forum Access
    Réponses: 2
    Dernier message: 06/03/2006, 19h29
  5. Réponses: 2
    Dernier message: 25/05/2004, 15h33

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