Chrono course de côte

mada16

XLDnaute Nouveau
Bonjour à tous,
je suis nouveau sur le forum et ne maîtrise que TRES PEU excel. Comme le titre l'indique, je cherche à créer un chronomètre sous excel pour des courses de côte. La particularité de ces courses est que le départ ne se situe pas au même endroit que l'arrivée, donc pour chronométrer ces épreuves "à pas cher" on utilise un chrono manu tout simple et des talkie. Le problème est que pour donner le top départ avec le bruit du kart, c'est pas évident.
J'ai donc pensé à un système avec deux fichiers excel que l'on comparerait après l'épreuve pour avoir les temps.
Pour faire simple, on fait défiler un chrono dans une case, que l'on synchronise entre départ et arrivée quand il n'y a pas de bruit. Un commissaire au départ et un à l'arrivée avec chacun son fichier excel qui comporte la liste des pilotes. Quand un kart passe le ligne de départ, le commissaire clique sur le N° du pilote et le temps (ou plutôt l'heure de passage) s'inscrit dans sa case, et quand il passe la ligne d'arrivée l'autre fait la même chose. On obtient ainsi deux temps (heure de passage) différents et on fera la soustraction après la fin de l'épreuve pour obtenir le temps de parcours réel.
J'ai cherché longtemps sur le net, j'ai trouvé pas mal de choses mais jamais ce que je cherchais exactement, et c'est pourquoi je fais appel aux spécialistes que vous êtes.
Le fichier qu se rapproche le plus est celui en PJ mais le chrono n'est qu'en secondes et on a besoin d'une précision au centième...J'ai donc joint un deuxième fichier (chrono au millième), mais j'ai vu que le sytème n'était pas le même, un utilise des macros, l'autre une userform...
Je précise que dans le premier fichier, je n'ai pas besoin de classement (pour l'instant...) et que je n'ai pas besoin non plus de plusieurs tours (on créra plusieurs classeurs pour plusieurs épreuves. En gros je n'ai besoin que d'une colonne (A par exemple) pour y inscrire les N° des pilotes, une deuxième pour leurs noms, et une troisième pour y voir les horaires s'inscrire quand on clique sur le N° en colonne A.
S'il peut y avoir deux autres colonnes, une pour y coller les temps que l'on aurait copié sur le fichier arrivée, et enfin la dernière qui effectuerait la soustraction automatique pour avoir le temps de parcours, ce serait parfait. J'ai fait une esquisse (3ème PJ) mais il manque l'essentiel...
Merci par avance de votre aide, en espérant ne pas avoir été trop long et suffisamment clair.

Mada16
 

Pièces jointes

  • chrono seconde classement.xlsm
    47.4 KB · Affichages: 63
  • chronometre_millieme_de_secondes.xls
    66.5 KB · Affichages: 56
  • chrono cc kart.xlsm
    20.7 KB · Affichages: 50

mada16

XLDnaute Nouveau
Ca marche!!!!
Petite question, mais si tu ne veux plus t'en occuper, pas grave, je ferais avec ça, c'est déjà pas mal!!!

Pourquoi le format d'affichage n'est pas le même sur la feuille arrivée entre les colonne départ et les colonnes arrivée/recap ????
 

Dranreb

XLDnaute Barbatruc
je ne sais pas comment m'y prendre avec QueryPerformanceFrequency,
QueryPerformanceFrequency ne s'emploie normalement qu'une fois au début pour en noter la valeur dans un Currency (C'est sa qualité d'entier très long qui justifie le choix de ce type de donnée, non qu'il sert usuellement au monétaire en codant en entier binaire 10000 fois un montant)
Mais il permet d'interpréter les valeurs renvoyées par QueryPerformanceCounter, c'est ce dernier qui permet de déterminer des différences de temps très précises.
Le principe est assez simple :
VB:
Dim QPC As Currency, QPF As Currency, TAct As Double, DeltaT As Double
…
QueryPerformanceCounter QPC ' Renvoie dans QPC une certaine valeur liée à l'instant ou il est invoqué.
…
QueryPerformanceFrequency QPF ' Renvoie dans QPF la différence des valeurs renvoyées par deux QueryPerformanceCounter espacés d'une seconde.
…
TAct = QPC / QPF ' Calcule un instant en secondes, mais on ne sait pas quelle heure il représente.
…
Rem. Soient QPC0 et QPC1 deux valeurs renvoyées par des QueryPerformanceCounter :
DeltaT= (QPC1 - QPC0) / QPF ' calcule le temps en secondes écoulé entre les deux à des nanosecondes près.
 

Dranreb

XLDnaute Barbatruc
J'ai pris comme noms de variables les majuscules des procédures permettant de les obtenir
QueryPerformanceCounter et QueryPerformanceFrequency
Mais tu peux les appeler NombreDeCyclesÉlémentairesÉcoulés et FréquenceEnHertzDesCyclesÉlémentaires si ça te parle mieux.
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Dranreb :)

Mettre en tête de module de la feuille(je crois) Private Declare Function QueryPerformanceFrequency, ça j'ai compris.
Ensuite, mettre [Now()] entre crochets, c'est ok; Application.OnTime Now + TimeValue("00:00:01")

Sub Chrono()
Application.OnTime Now + TimeValue("00:00:01") , , "Top_Depart"
'Je pense qu'il faut l'utiliser comme ceci
End Sub

Mais pour le reste
TAct = QPC / QPF

Rem. Soient QPC0 et QPC1
DeltaT= (QPC1 - QPC0) / QPF

Je suis largué.
 

Lone-wolf

XLDnaute Barbatruc
Re Dranreb

J'ai trouvé un exemple sur le net, mais sans OnTime n'y défilement; ensuite j'ai mis au format personnalisé la cellule B5 comme ceci "hh:mm:ss.00" et bizarrement le résultat est "00:00:00.19" en mettant la fréquence(je crois) à 0; logique, puisque il faut partir de 0. En PJ
 

Pièces jointes

  • Test QPC-QPF.xlsm
    15 KB · Affichages: 33

mada16

XLDnaute Nouveau
pour Lonewolf,

j'ai regardé vite fait, ca m'a l'air bon...et oui je sais me servir du format personnalisé, mais je pensais qu'on ne pouvait le format de ces cellules que par l'intermédiaire du code (parce qu'elles faisaient partie d'une macro) Désolé, mais tu voies là mon inexpérience avec excel :confused::confused:
Je pars au taf dans 5', je regarde ça de plus près ce midi ou ce soir et je te dis ce qu'il en est!!!!
En tout cas, pour l'instant un grand (énorme) merci pour ta patience, je n'ai peut être pas toujours été assez clair, mais c'est dur de parler d'un domaine qu'on maîtrise (pour moi le kart) à quelqu'un qui ne connait pas forcément ce domaine;);)
A+++
 

Dranreb

XLDnaute Barbatruc
Bonjour Lone-wolf
Mon idée c'était quelque chose comme ça :
VB:
Option Explicit
Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Dim HeureRéf As Date, QPCRéf As Currency, QPF As Currency

Sub ActiverChrono()
QueryPerformanceFrequency QPF
HeureRéf = Now + TimeSerial(0, 0, 1)
Application.OnTime HeureRéf, "SynchronisationChrono"
End Sub

Sub SynchronisationChrono()
QueryPerformanceCounter QPCRéf
End Sub

Function HeureJuste() As Double
Dim QPC As Currency
QueryPerformanceCounter QPC
If HeureRéf = 0 Then Err.Raise 9999, , "Chronomètre non actif"
HeureJuste = (HeureRéf - Int(HeureRéf)) + (QPC - QPCRéf) / QPF / 86400
End Function

Sub TestIncrire()
ActiveSheet.[B5] = HeureJuste
MsgBox "Heure approximative incrite: " & Format(Now, "hh:mm:ss")
End Sub

Sub DésactiverChrono()
HeureRéf = 0
End Sub
 

Dranreb

XLDnaute Barbatruc
Après pour tout effet visuel inutile souhaité on invoque HeureJuste
On affiche le temps écoulé par soustraction de HeureJuste - HeureDépart reprise de la ligne sélectionnée par exemple.
HeureRéf ne sert pas d'heure de départ. Elle sert seulement au calcul de HeureJuste
 

ROGER2327

XLDnaute Barbatruc
Bonjour à tous.

Je n'ai pas suivi la discussion en détail, aussi n'ai-je pas de solution adaptée au problème de mada16. Je dépose toutefois une contribution à base de VBA.Timer écrite pour une vieille discussion (2013 ?). C'est peut-être adaptable par notre ami...

Bonne soirée.


ℝOGER2327
#8461


Lundi 23 Décervelage 144 (Saint Tank, animal - fête Suprême Quarte)
1[SUP]er[/SUP] Pluviôse An CCXXV, 6,2878h - lauréole
2017-W03-5T15:05:27Z
 

Pièces jointes

  • Chronomètre (3).xlsm
    32.3 KB · Affichages: 45

Discussions similaires

  • Question
Microsoft 365 chrono
Réponses
6
Affichages
332
Réponses
15
Affichages
321
Réponses
3
Affichages
350