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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 2490
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
    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é.

  4. #4
    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).

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir Clément,

    De toutes les façons Excel brideras toujours le chronomètre!

    J'ai testé avec le contrôle timer de Vb6 1/1500 secondes!

    Oui la pression et Excel ça fait 2. Je te rejoins sur la seule solution plausible!

    Perso je ne développerai pas mon pace-maker sur excel!

    Pour avoir une précision au centième il faut une fréquence d'échantillonnage 10 fois plus grande.
    Dernière modification par Invité ; 07/02/2018 à 23h33.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    J'ai testé avec le contrôle timer de Vb6 1/1500 secondes!
    Bonjour,

    Attention toutefois à ne pas vendre du rêve !

    A moins que tu aies eu de la chance, pour avoir aussi expérimenté GetTickCount en VB6, j'ai eu quelques déconvenues. Nous avions besoin d'émettre des salves de fréquences d'une durée de 50 ms, et on s'est rendu compte qu'on oscillait entre 48 et 52 ms... parfois même plus.... et ce, même sans "parasite" extérieur (clavier ou souris)

    Mais comme ça été dit et redit, vouloir une telle finesse sur Excel d'une part, et avec un clic sur un bouton d'autre part, avec toute l'imprécision que cela comporte...

  7. #7
    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.

  8. #8
    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 : 2101
Taille : 201,9 Ko
    Images attachées Images attachées  

  9. #9
    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

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

  11. #11
    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.

  12. #12
    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

  13. #13
    Invité
    Invité(e)

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code Caca! : 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
    Public T As Date, Start As Boolean
     
     
    Sub Tic()
    Dim S As Date
    If Start = True Then
        S = Time - T
        Range("A1") = Format(S, "hh:mm:ss,") & Right(Format(S, "#0.000"), 3)
        DoEvents
    '    Application.OnTime Now + TimeValue("00:00:01"), "Tic"
    End If
     
     
    End Sub
    Sub Bouton1_Clic()
    Range("A1:A100") = ""
    T = Time: Start = True: 'Application.OnTime Now + TimeValue("00:00:01"), "Tic"
    Do While Start
    Tic
    Loop
    End Sub
    Sub Bouton2_Clic()
    Start = False
    End Sub
     
     
    Sub Caseàcocher6_Clic()
    [A7] = [A1]
    End Sub
    Sub Caseàcocher7_Clic()
    [A8] = [A1]
    End Sub
    Fichiers attachés Fichiers attachés

  15. #15
    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
    Quand je pense que VB.net a une classe Timer qui demande de spécifier les intervalles en millisecondes (OK le timer de Windows Forms est un peu plus lent), et que le même VB.net peut exprimer une durée d'intervalle en millisecondes, même si un affichage en continu ne peut pas être précis à la milliseconde, je me demande pourquoi faire cela avec Excel. (Ou pourquoi il y a des cordonniers mal chaussés qui veulent demeurer mal chaussés quand ils peuvent être bien chaussés pour rien, ou presque ? )

    Mais bon, ce n'est pas la première, ni la dernière fois, fois que quelqu'un veuille détourner Excel de sa mission et que je fasse la même réflexion

    P.S. Pour un particulier, Visual Studio Community est gratuit, il peut être utilisé pour créer des applications pour Excel, il produit des programmes compilés et il vient avec une version gratuite de SQL Server.

    P.P.S. Ce ne sont pas toutes les tablettes qui peuvent supporter un Excel avec VBA

  16. #16
    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é!

  17. #17
    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

  18. #18
    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!

  19. #19
    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

  20. #20
    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

+ 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