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 :

Chrono au centième dans VBA Excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Par défaut Chrono au centième dans VBA Excel
    Bonjour à tous

    Je suis enseignant en EPS et je pratique depuis peu la programmation en VBA
    J'ai réussi à développer un chronomètre pour mes épreuves de course ou de natation, mais je n'arrive pas à le modifier pour me servir des centièmes de seconde.
    Voici la macro que j'ai inscrite dans mon classeur

    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
    Option Explicit
    Public running As Boolean, temps As Single
    Const UneSec = 1 / 86400
    Sub compte()
    
    If running = True Then
    Application.OnTime Now + TimeValue("00:00:01"), "compte"
    temps = temps + UneSec
    Range("J1") = temps
    End If
    End Sub
    
    'mon Chronomètre s'affiche dans la cellule J1 mais également dans une bulle (orange)
    
    Sub chrono()
    'Départ chrono
    If running = False Then
    running = True
    compte
    End If
    End Sub
    Nom : Image chrono Excel.jpg
Affichages : 2493
Taille : 23,9 Ko
    Toutes mes cellules contenant du temps sont formatées comme suit " mm:ss,0
    de plus j'ai l'impression que dès que je déclenche le chronomètre, il affiche instantanément 00:01 au lieu d'attendre une seconde

    Cordialement

  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
    Citation Envoyé par philou59178 Voir le message
    je n'arrive pas à le modifier pour me servir des centièmes de seconde.
    Un code qui reste très théorique car dépendant tu temps d'exécution du reste du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime Now + TimeValue(UneSec / 1000), "compte"
    de plus j'ai l'impression que dès que je déclenche le chronomètre, il affiche instantanément 00:01 au lieu d'attendre une seconde
    C'est normal puisque "temps" n'est pas initialisé (donc commence à 0) et que, dès le lancement, tu lui ajoutes une seconde.
    La ligne Application.OnTime Now + TimeValue("00:00:01"), "compte" ne temporise pas les lignes suivantes mais relance une nouvelle cession de la macro au bout d'un temps fixé.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Intervalle 1/1500
    https://mon-partage.fr/f/Mnw2PAmc/

    Plus tu cadenceras vite ton échantillonnage et plus tu auras de précision!

    Plus tu cadenceras vite ton échantillonnage et plus les évènement d,Excel te ralentiront!

    À toi de trouver le bon compromis!
    Dernière modification par Invité ; 05/02/2018 à 17h47.

  4. #4
    Expert confirmé
    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
    Par défaut
    Salut, voir ici

  5. #5
    Invité
    Invité(e)

  6. #6
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Citation Envoyé par philou59178 Voir le message
    je n'arrive pas à le modifier pour me servir des centièmes de seconde.
    Un code qui reste très théorique car dépendant tu temps d'exécution du reste du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime Now + TimeValue(UneSec / 1000), "compte"
    Bonjour , j'ai essayé ce code et ça Bugue y compris avec ("uneSec / 1000")


    C'est normal puisque "temps" n'est pas initialisé (donc commence à 0) et que, dès le lancement, tu lui ajoutes une seconde.

    Faut-il que j'initialise "temps" à 0 dans quel sub() et sous quel format

    La ligne Application.OnTime Now + TimeValue("00:00:01"), "compte" ne temporise pas les lignes suivantes mais relance une nouvelle cession de la macro au bout d'un temps fixé.

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    La seule latence d'affichage vient déjà fausser la mesure. Et elle n'est pas la seule latence induite.
    Et si l'on inhibe l'affichage, on ne voit plus la progression du temps
    Et si on ne l'inhibe pas, même un lynx ne serait pas capable de lire une progression défilant à une telle vitesse (je rappelle que La vision humaine n'est ni fluide, ni instantanée et qu'elle se traduit par une succession de signaux envoyés au cerveau tous les 40èmes de seconde seulement, avant même de pouvoir être "analysés" par le cerveau).
    Que se passe-t-il d'ailleurs avec un vrai chronomètre ? Aucun oeil n'est vraiment capable d'y suivre réellement une progression au 100ème de seconde.
    On se contente d'avoir une idée "approximative" (position approximative d'une aiguille, par exemple) et on ne connaît avec précision (au 100ème de seconde) la durée qu'en appuyant sur un bouton (d'arrêt ou de "relevé" selon les performances du chronomètre).

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oui Unparia confirme ce que je disais au poste #3!

    Il faut au minimum dissocier le timer de affichage pour lui laisser une chance de recoller les wagons!

    Perso j'utiliserai le time double précisions du poste #3 et le lien du poste #5 pour l'affichage!

    Pour la persistance rétinienne désolé!

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Robert
    Pour la persistance rétinienne désolé!
    C'est bien pire que cela : l'oeil n'est pas capable d'envoyer plus de 40 signaux par seconde en moyenne au cerveau. Avant même interprétation par le cerveau, en plus.
    Personne ne serait capable de lire et interpréter 100 images à la seconde.

    EDIT : ne surtout pas confondre avec le traitement à retardement, par le cerveau, d'une image vue par l'oeil à un instant t et dont le signal a été transmis au cerveau 1/40ème de seconde plus tard (le principe même des images subliminales, qui ont bien été transmises au cerveau, que le cerveau a bien "vues", mais à retardement).

    Quoi qu'il en soit : il ne sert rigoureusement à rien d'afficher la valeur d'un compteur (chronomètre ou n'importe quoi d'autre) à cette fréquence-là.
    Et même si, en utilisant un stroboscope (sans lequel on ne pourrait lire aucune donnée d'un tel chronomètre) , on "cadence" la lecture, la valeur lue n'est déjà plus la bonne le temps de la lire

  10. #10
    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 philou59178 Voir le message
    Bonjour , j'ai essayé ce code et ça Bugue y compris avec ("uneSec / 1000")
    "Ca bugue", c'est un peu court comme description de problème.

  11. #11
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Par défaut
    Citation Envoyé par Menhir Voir le message
    "Ca bugue", c'est un peu court comme description de problème.
    Bonjour
    voici une copie de la page

    Nom : bug excel.jpg
Affichages : 2105
Taille : 201,9 Ko
    Images attachées Images attachées  

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    pour continuer dans la série des interrogations j'ai du mal à imaginer la qualité d'une mesure au 1/100e si début et arrêt se font par un clic sur un bouton.
    Il faut que la précision soit en cohérence avec les moyens mis en oeuvre. 2 chiffres après la virgule n'a pas de sens si on n'est pas sûr du premier.
    C'est un déclenchement électronique que tu utilises ?
    eric

  13. #13
    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
    Supprime la fonction TimeValue (mais garde le contenu).
    Définis la constante UneSec comme de type Double.

  14. #14
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    pour continuer dans la série des interrogations j'ai du mal à imaginer la qualité d'une mesure au 1/100e si début et arrêt se font par un clic sur un bouton.
    Il faut que la précision soit en cohérence avec les moyens mis en oeuvre. 2 chiffres après la virgule n'a pas de sens si on n'est pas sûr du premier.
    C'est un déclenchement électronique que tu utilises ?
    eric
    Bonjour
    J'utilise une tablette avec déclenchement tactile sur les boutons de démarage et d'arrêt.
    Je comprend ton interrogation sur la précision au centième et je pourrais me satisfaire d'une précision au dixième.
    ce sont les barèmes du bac en natation qui demandent une telle précision. Je ne suis pas forcement pour.
    Pas d'inquiétude cependant, j'utilise en plus un chronomètre pour l'instant, tant que la mesure n'est pas "fiable" avec ce type d'outil

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Application.ontime est en soit imprécis! [temps = temps + UneSec] là tu aggraves la situation!

    Je ne sais pas quel est le plus petit intervalle possible pour ontime mais il le faut le plus réduit possible!

    Si tu veux t'approcher d'une précisions d'horloger intéresser toi àl'API GetTickCount!

  16. #16
    Expert confirmé
    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
    Par défaut
    Salut, bis repetita voir chronomètres

  17. #17
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonsoir,
    Application.ontime est en soit imprécis! [temps = temps + UneSec] là tu aggraves la situation! je ne sais pas pourquoi !?

    Je ne sais pas quel est le plus petit intervalle possible pour ontime mais il le faut le plus réduit possible!

    Si tu veux t'approcher d'une précisions d'horloger intéresser toi àl'API GetTickCount!
    Bonjour
    merci pour tes inquiètudes, mais comme je le disait je débute avec le VBA.
    Je suis prêt à tester ton appli, mais il faut que j'y comprenne un minimum.
    est ce que je pourrai récuperer mes "clics de temps" dans un tableau excel face aux noms des élèves que je chronomètre ?
    cordialement

  18. #18
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    est ce que je pourrai récuperer mes "clics de temps" dans un tableau excel face aux noms des élèves que je chronomètre ?
    Nul besoin d'un "chrono", pour ce faire ! il suffit d'utiliser la fonction Timer, d'en relever la valeur V1 au départ (un click) la valeur V2 à l'arrivée (unj click) et d'en déduire la durée !
    Et c'est tout-à-fait le sens de ce que je t'ai dit plus haut. L'affichage du déroulement est totalement inutile et inexploitable. Seule la durée entre deux clicks signifie quelque-chose (comme d'ailleurs avec un vrai chronomètre).

  19. #19
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Supprime la fonction TimeValue (mais garde le contenu).
    Définis la constante UneSec comme de type Double.
    j'ai fait comme ceci ====> Erreur d'excécution '13' Imcompatibilité de type !
    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
    Option Explicit
    Public running As Boolean, temps As Single
    Const Unesec = 1 / 86400
    Sub compte()
    Dim Unesec As Double
    If running = True Then
    Application.OnTime Now + ("00:00:01"), "compte"
    temps = temps + Unesec
    Range("J1") = temps
    End If
    End Sub
     
    Sub chrono()
    'Départ chrono
    If running = False Then
    running = True
    compte
    End If
    End Sub

  20. #20
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    deux boutons sur une feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
        Range("a1").Value = Timer
    End Sub
     
    Private Sub CommandButton2_Click()
        Range("b1").Value = Timer
        Range("c1").Value = Range("b1").Value - Range("a1").Value
    End Sub

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

Discussions similaires

  1. userform déconnecté dans vba excel
    Par PTIT FILOU dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/06/2008, 15h59
  2. Réponses: 5
    Dernier message: 27/05/2008, 18h43
  3. Liste des contrôles dans VBA-Excel
    Par CAFOUIN dans le forum Excel
    Réponses: 2
    Dernier message: 23/02/2007, 17h50
  4. Name et formula dans VBA Excel
    Par khadba dans le forum Windows
    Réponses: 1
    Dernier message: 20/02/2007, 11h37
  5. [VBA-E] Compatibilité de Date dans VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/05/2006, 19h25

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