Chrono course de côte

  • Initiateur de la discussion Initiateur de la discussion mada16
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 ????
 
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.
 
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.
 
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é.
 
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

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 😕😕
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+++
 
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
 
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
200
Réponses
4
Affichages
126
Réponses
12
Affichages
214
  • Question Question
Microsoft 365 chrono
Réponses
6
Affichages
536
Réponses
3
Affichages
483
Retour