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 :

[Source]Chronomètre et chronométrage [Fait]


Sujet :

Macros et VBA Excel

  1. #1
    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 [Source]Chronomètre et chronométrage
    Chrono tout bête.zip


    Le même par macro
    En tête d'un module standard, déclarer la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function GetTickCount& Lib "kernel32" ()
    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
    Sub MesureDuTempsQuiPasse()
    Dim Départ As Double, arrivée As Double, i As Long, Durée as double
    Dim mn As Integer, ms As Integer, sd As Integer, tps As String
        Départ = GetTickCount&
        '************* *** Le code ******************
        For i = 1 To 100000 'remplace le déroulement du code
             DoEvents
        Next
        '*****************************************
        arrivée = GetTickCount&
        Durée = arrivée - Départ
        mn = Int(Durée / 1000 / 60)
        sd = Int((Durée / 1000) - (mn * 60))
        ms = Durée - (sd * 1000) - (mn * 1000 * 60)
        'Formatage #:##:###
        tps = mn & ":" & right("00" & sd, 2) & ":" & Right("000" & ms, 3)
        MsgBox tps
    End Sub
    Remarque : La fonction GetTickCount& peut être appelée de toutes procédures. Ce qui permet, en ayant déclaré "Départ" en variable Public, d'obtenir à tout moment une durée.

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Et ça fonctionne ?
    Pour un simple chronomètre oui.

    Vous chronométrez quoi ?

    Je connais pas le système de contribution de developpez mais pour faire avancer le smil...

    Mon problème a été de faire de l'aquisition à partir du port parralèle.
    Ca vous intéresse ?

    J'ai rencontré de nombreux problèmes de mesure du temps avec GetTickCount().

    Mon système fonctionne sous Win98 et oui dans les labo on a pas toujours le matériel dernier cri.

    Il faut bien préciser que le simple fait de faire des calculs à excel (4) fait passer de 75ms le temps entre chaques mesures et 5 ms en ne réalisant aucun calcul, sauf l'affichage de la valeur.

  3. #3
    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
    Oui, et je connais quelqu'un qui mesure encore le temps avec un cadran solaire, mais il travaille dans les champs, pas dans un labo
    Effectivement, le "simple fait" de faire des calculs prend du temps.
    Tu remarqueras d'ailleurs, si tu as examiné la procédure que je propose dans le .Zip, que je mesure le temps avant de l'afficher et de le convertir (alors que j'aurais pu convertir GetTickCount plutôt qu'une variable), conversion qui comporte aussi des calculs. Et je pense que c'est ainsi qu'il faut procéder, pas l'inverse.
    Enfin, GetTickCount() me sert le plus souvent, pour connaître le temps d'exécution d'une macro. Tu as ici un exemple d'utilisation qui a permis à l'un de nous de sélectionner une syntaxe parmi plusieurs. Et là tu as la précision maximale de cette fonction.
    Pour augmenter la précision de tes mesures, je ne peux que te conseiller de chronomètrer également le temps de calculs à déduire du temps total. GetTickCount te permet de faire ça

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 3
    Points
    3
    Par défaut chronometrer l'execution d'une macro
    salut

    Moi je souhaiterai chronometrer l'execution d'une macro
    car celle ci prend à peut près 25 min (et oui !) mais
    j'aimerais savoir exactement combien!

    Puis-je adapter de code ?
    Comment faire pour adapter ce code ?
    et surtout sans ralentir ma macro longue,
    que je dois par ailleur optimiser, mais ça
    c'est une autre histoire...

    merci d'avance

  5. #5
    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
    Il me sempble que c'est tout simple : Tu mets sur la première ligne de ta macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Départ = GetTickCount&
    et, avant End sub
    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
        mn = Int(Durée / 1000 / 60)
        sd = Int((Durée / 1000) - (mn * 60))
        ms = Durée - (sd * 1000) - (mn * 1000 * 60)
        'Formatage #:##:###
        tps = mn & ":" & right("00" & sd, 2) & ":" & Right("000" & ms, 3)
        MsgBox tps
    Tu auras le temps en mn, secondes et millisecondes
    Mais lis bien tout, tu dois déclarer avant la procédure, en tête de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function GetTickCount& Lib "kernel32" ()
    A+

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 3
    Points
    3
    Par défaut

    je vais tester
    je te tien au jus



    A+

    EDIT:
    yes ça marche nikel !

    J'ai juste modifié un peut
    pour metre au format 00m00s000
    et completer le message et voilà

    merci encore
    A bientot

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut ouskel'n'or et le forum
    Ta macro m'intéresse et je l'ai copiée dans ma biblio de références.
    peux-tu juste m'expliquer ton choix pour la msgbox de sortie ? Moi j'aurais utilisé Format(). Y a-t-il une raison ou est-ce une "habitude" ?

    je sasi que je critique, mais pas de déclaration pour Durée ? (je suis en déclaration obligatoire (Option explicit)
    Merci et A+

  8. #8
    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 Gorfael
    peux-tu juste m'expliquer ton choix pour la msgbox de sortie ? Moi j'aurais utilisé Format(). Y a-t-il une raison ou est-ce une "habitude" ?
    Le temps en heures, minutes, secondes et millisecondes est le résultat d'un calcul en partant précisément de millisecondes. Le format pour obtenir la même chose à partir de millisecondes, connais pas. Mais je compte sur toi

    Citation Envoyé par Gorfael
    je sais que je critique, mais pas de déclaration pour Durée ? (je suis en déclaration obligatoire (Option explicit)
    Merci de me le signaler. Pense à l'ajouter

  9. #9
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour ouskel'n'or et le forum,

    Super merci pour ce compteur.

    Je viens de l'utiliser sur un traitement long et j'ai eu un dépassement de capacité sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ms = Durée - (sd * 1000) - (mn * 1000 * 60)
    J'ai remplacé les integer par long et ca fonctionne impec !

    Merci

  10. #10
    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
    En effet, comme me l'a si gentiment signalé Gorfael, j'avais oublié de déclaré Durée. J'en ai fait un double ; ça devrait aller

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut ouskel'n'or et le forum
    Je me suis mal exprimé : pourquoi utiliser :et pas par exemple :C'est juste pour moi. Il y a des fois des astuces que je ne comprends pas et ça m'empêche de dormir .
    A+
    Ps j'avais déclaré Durée (pour éviter qu'excel ne fasse un KK nerveux )

  12. #12
    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 Gorfael
    Il y a des fois des astuces que je ne comprends pas et ça m'empêche de dormir
    Ah ! Juste une vieille habitude de formatage des données du temps où j'utilisais le basic Applesoft pour du transfert de données en 1200 bauds par modem téléphonique sur Apple IIe. Bref, quand tu portais encore des couches.

Discussions similaires

  1. Chronomètre et chronométrage
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 1
    Dernier message: 28/02/2014, 16h42
  2. Chronomètre et chronométrage
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2011, 15h30
  3. [Sources] Chronomètre et chronométrage
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/03/2007, 17h18
  4. Outil de reformatage d'un source Pascal
    Par HRS dans le forum Pascal
    Réponses: 7
    Dernier message: 21/10/2002, 14h55
  5. mp3 et source
    Par davlefou dans le forum C
    Réponses: 2
    Dernier message: 18/10/2002, 15h01

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