Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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: 51

Dranreb

XLDnaute Barbatruc
Curieux, je n'ai trouvé aucune modification dans tes Sub Worksheet_SelectionChange (parce que ce ne sont plus les miennes à partir de maintenant) qui rende compte de ce que tu disais vouloir: que ça réagisse à la sélection dans la colonne A, notamment, et aussi qu'il ne devait plus travailler qu'avec la colonne D. Alors je n'ai rien changé à ses réactions non plus, je me suis borné à le commander par les nouvelles méthodes de telle sorte qu'il réagisse de la même façon qu’auparavant.
 

Pièces jointes

  • ChronoMada16.xlsm
    54.4 KB · Affichages: 59

mada16

XLDnaute Nouveau
Je n'ai pas dit que j'étais arrivé à faire ces modifs (réagir à la colonne A plutôt que D... c'est juste ce que je désire.
Quant à ne travailler que avec la colonne D, c'est ma méthode pour que ton fichier puisse me servir tel qu'il était, mais je n'ai absolument rien changé dans le code (je sais à peine en lire deux lignes...)
 

Dranreb

XLDnaute Barbatruc
Qu'est ce que tu attend pour essayer ?
Des explications peut être, alors on veut bien en donner si on savait ce que tu ne comprends pas dans le fonctionnement d'une Sub Worksheet_SelectionChange. Il y a aussi la touche F1 pour obtenir de l'aide sur les méthodes et propriétés des objets Microsoft, le curseur texte étant sur l'une d'elle dans le code.
 

mada16

XLDnaute Nouveau
Bonsoir Dranreb

De Belfort à Cognac se n'est pas bien loin B - C , il faut aller chez lui c'est mieux; s'aurait été de Belfort au Zimbawe B - Z , j'aurais dit NON!! Même pas en rêve! .

Je vois que l'humour est de sortie
Alors saches que la porte est grande ouverte, et qu'il y aura le gite et le couvert
Et en plus tu repartiras avec un flacon du produit phare de la région....à boire avec modération, biensûr
Et ça, c'est pas de l'humour!!!
 

mada16

XLDnaute Nouveau
Re Dranreb,

Bonjour, tout d'abord en ce beau dimanche ensoleillé....mais un peu froid!!!
Que crois tu que j'essaie de faire depuis bientôt une semaine??
Au début de cette discussion, en milieu de semaine, excel pour moi, c'était un logiciel tableur, rien de plus
Je savais faire un tableau, le mettre en page, classer ou trier les colonnes, inclure quelques formules basiques, voila tout...
Je ne savais même pas ce qu'était une macro, et encore moins un userform, et je ne te parle même pas de code VBA....
Si tu savais le temps pendant lequel j'ai galéré pour arriver à faire correctement la macro qui fait le classement, je crois que tu partirais en pleurant, alors exploiter ou modifier un code, c'est comme si tu demandais à un gamin à qui on vient de retirer les roulettes de son vélo, d'aller se faire le col du Tourmalet
Néanmoins je suis curieux et ne demande qu'à apprendre, donc je regarde et j'essaie, mais ça me prend des heures pour faire ce que toi tu fais en 3 clic et demi
Pour revenir à ce projet:
La nuit portant conseil, j'ai réfléchi à ton idée de bouton. L'idée du changement de couleur est excellente, mais ce qui me gêne, c'est le défilement de l'heure figée. Est ce qu'il est possible que ce ne soit pas figé en permanence ??? je m'explique: une fois le fichier ouvert, je clique sur la case A2 (premier kart à partir). Cette action fait apparaître le userform dans un coin de la feuille, en dehors du tableau pour ne pas gêner le visuel sur les cases et ne pas risquer de cliquer sur une autre case du tableau, avec l'horaire qui défile et un bouton vert. Le kart passe la ligne, je clique sur le bouton vert (ou barre espace): cette action fige l'horaire du userform, inscrit cet horaire dans la case D2 et passe le bouton en rouge. Ensuite je clique sur la case A3 ou A... (kart suivant) et le bouton repasse au vert, l'horaire se remet à défiler. Et ainsi de suite...
 

Dranreb

XLDnaute Barbatruc
Bonjour.
C'est à dire que ce serait mieux que le bouton soit vert plutôt que rouge quand l'heure défile ?
D'habitude sur toutes les machine que j'ai vues c'est un bouton rouge pour stopper et vert pour redémarrer, mais bon ça peut se faire.
…Et toujours pas de question à propos de d'une Sub Worksheet_SelectionChange et surtout de ce fameux 'Target' qu'on y voit tout le temps, et qui doit être forcément très mystérieux pour toi, sinon tu te la serait corrigée depuis longtemps comme il te la faut.
Ma fois si tout ça ne t'intéresse pas, qu'est ce que tu veux…
 
Dernière édition:

mada16

XLDnaute Nouveau
Pour la couleur du bouton, j'ai un raisonnement différent, il ne commande pas le défilement, mais l'inscription de l'horaire dans la case : il est vert, donc on peut cliquer dessus et inscrire un horaire dans la case. Il est rouge donc ça ne sert à rien de cliquer dessus, il faut d'abord sélectionner une autre case...
Pour le reste, je t'ai dit c'est du chinois pour moi... Dans mon ancien métier, "target" ça voulait dire objectif à détruire avec gros fracas (chaleur et lumière) !!! Ici je suppose que ça veut dire cible, que certainement ça se rapporte au userform, mais une chose que j'ai retenu dans le codage, c'est qu'on défini d'abord une chose avant de s'en servir. Hors dans le code du userform, je ne voie pas "target" donc c'est pas ça...
C'est peut être alors la sélection, mais dans le code de la feuille, il y a plusieurs associations (target.value/target.colum/target.offset/etc...) qui me disent que ça peut pas être ça, alors je suis perdu
Et puis il y a tellement de mot-code que je n'ose pas trop me lancer dans des modifs.
Je suis déjà super content d'avoir réussi à changer de place les colonnes A en D, B en E, et C en F et en ce moment je galère sur une modification du tri....donc c'est vrai, le code c'est secondaire pour moi, je préfère laisser ça au pro
 

Dranreb

XLDnaute Barbatruc
Je ne demande pas de comprendre le code de UFmChrono.
Il y a maintenant les commentaires explicatifs du mode d'emploi dans du code extérieur, c'est tout ce qu'il y a à y comprendre.
Dans une Worksheet_SelectionChange, Target est un paramètre transmis par Excel lors de la sélection d'une plage. C'est un objet Range qui représente la plage sélectionnée. Comme tout objet Range il possède de nombreuses propriétés comme Row, Column, Rows, Columns, Value, Address, Formula, FormulaR1C1, Font, Interior et j'en passe. Il n'y a qu'à tester celles qui sont intéressantes pour le résultat voulu avec des If.
Il supporte aussi de nombreuses méthodes telles que Offset, EntireRow, EntireColumn permettant de définir d'autres Range basés sur lui, et plein d'autres choses encore.

Je trouve que ce n'est pas une bonne idée d'avoir interverti les colonnes Heure Départ et Heure Arrivée Dans la feuille arrivée. Et la feuille Départ devrait s'arrêter à la colonne D. Ce serait bien de faire sur tout ça des mises sous forme de tableaux Excel.

Soit pour l'interversion des rôles des boutons rouge et vert. Mais je redessine le bouton vert plus clair alors.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
J'ai bien envie de remettre dans le même ordre les colonnes Départ, Temps, Arrivée, dans les deux feuille,
de mettre tout ça sous forme de tableaux Excel,
De prévoir un classement des tableaux par simple sélection sur une colonne de titre,
de prévoir un petit UserForm supplémentaire pour saisir le numéro de Kart (peut être plus facile, avec le clavier numérique, que de le chercher dans la liste). Comme ça tout pourrait se faire au clavier:
saisir un numéro, Entrée, barre d'espacement pour noter le temps, saisir un autre numéro, Entrée etc.
J'avais cherché un moyen d'éviter d'avoir à faire Entrée après la saisie, mais ce ne serait possible que si on saisit obligatoirement le "0" non significatif des numéros inférieurs à 10. S'ils peuvent dépasser 99 il faudrait saisir 3 chiffres dont les 0 non significatifs.
 

mada16

XLDnaute Nouveau
J'ai bien envie de remettre dans le même ordre les colonnes Départ, Temps, Arrivée, dans les deux feuille,
Si j'ai mis les colonnes de la feuille arrivée dans ce sens, c'est pour me servir du userform comme sur la feuille départ, sans modification de code. N'oublies pas que le commissaire départ ne se servira QUE de la feuille départ, et le commissaire arrivée QUE de la feuille arrivée. En fait, je n'ai besoin de l'inscription QUE d'un seul horaire par feuille. L'inscription de l'horaire dans la colonne arrivée de la feuille départ ne servira certainement jamais, seulement si un jour on a assez de budget pour coupler ce fichier à des cellules IR...

de mettre tout ça sous forme de tableaux Excel, parce que c'est pas sous tableaux excel actuellement????

De prévoir un classement des tableaux par simple sélection sur une colonne de titre, je préfère un bouton comme je l'ai fait, si le commissaire clique par hasard sur le titre avant la fin de l'epreuve, ça va tout chambouler....D'autant plus que je viens de faire une modif pour faire un classement "scratch" (toutes catégories confondues) sur la feuille départ, et un classement par catégorie sur la feuille arrivée. Je te joins le nouveau fichier.

de prévoir un petit UserForm supplémentaire pour saisir le numéro de Kart (peut être plus facile, avec le clavier numérique, que de le chercher dans la liste). Pourquoi pas, bien que normalement, dans ce genre de course, les karts partent dans l'ordre des numéros, donc pas de difficulté particulière pour trouver le N°
Comme ça tout pourrait se faire au clavier:Trés bonne idée
saisir un numéro, Entrée, barre d'espacement pour noter le temps, saisir un autre numéro, Entrée etc.
J'avais cherché un moyen d'éviter d'avoir à faire Entrée après la saisie, mais ce ne serait possible que si on saisit obligatoirement le "0" non significatif des numéros inférieurs à 10. S'ils peuvent dépasser 99 il faudrait saisir 3 chiffres dont les 0 non significatifs.

Maintenant pour répondre au post précédent, voilà ce que j'ai compris :

Private Sub Worksheet_SelectionChange(ByVal Target As Range) ça c'est l'événement (sélection d'une cellule) et "target" correspond à la cellule sélectionnée
Dim HDép ????
If Target.CountLarge > 1 Then Exit Sub si selection de plusieurs cellules PAS BON
If Target.Row < 2 Then Exit Sub si selection d'une cellule au dessus de la ligne 2 PAS BON
If Target.Column = 4 And IsEmpty(Target.Value) Then Si selection d'une cellule dans la colonne 4 et si chrono initialisé
UFmChrono.Afficher Target inscrire la valeur dans la sélection
ElseIf Target.Column = 6 And Not IsEmpty(Intersect(Columns(4), Target.EntireRow).Value) Then si cellule sélectionnée dans colonne 6 et si ?????
UFmChrono.Afficher Target, Target.Offset(, -2).Value inscrire la valeur dans la sélection
Else: UFmChrono.Hide: End If masquer chrono
End Sub

Par contre j'ai beau essayer d'enlever le "UFmChrono.Hide" le userform se masque toujours et je n'ai pas trouvé d'instruction pour le garder visible...
 

Pièces jointes

  • Dranreb modifié 5.xlsm
    56.9 KB · Affichages: 50

Dranreb

XLDnaute Barbatruc
C'est à l'UserForm de s'adapter, pas aux colonnes. Et il s'adapte très facilement puisqu'on lui indique en paramètre l'objet Range représentant la cellule qu'il doit modifier.
Non, ce sont des plages normales. Elles n'ont pas fait l'objet de mises sous formes de tableaux, menu Accueil, groupe Styles, commande Mettre sous forme de tableau.
Pourquoi ça chamboulerait tout ? Je crois moi que ce serait extrêmement pratique de pouvoir classer sur n'importe quelle colonne simplement en sélectionnant son titre.
Dim HDép ne sert à rien. C'est un truc que j'avais oublié d'enlever.
Corrections :
VB:
If Target.Column = 4 And IsEmpty(Target.Value) Then ' Si sélection d'une cellule dans la colonne 4 et si cette cellule est vide
UFmChrono.Afficher Target ' Appelle la méthode Afficher de l'ancien UFmChrono en lui indiquant comme cellule à mettre à jour celle représentée par Target
ElseIf Target.Column = 6 And Not IsEmpty(Intersect(Columns(4), Target.EntireRow).Value) Then ' Si cellule sélectionnée dans colonne 6 et si la cellule à l'intersection de la colonne 4 et de la ligne entière contenant la cellule représentée par Target est vide
UFmChrono.Afficher Target, Target.Offset(, -2).Value ' Appelle la méthode Afficher de l'ancien UFmChrono en lui indiquant comme cellule à mettre à jour celle représentée par Target et la valeur de celle à 2 à sa gauche comme valeur d'heure de départ pour le calcul du temps affiché.
L'ancien UFmChrono ne peut pas être commandé de façon à se figer après enregistrement de l'heure. Il faut prendre le nouveau. On mieux, le prochain que je joindrai tôt ou tard.

Je crois que je vais continuer sur mon idée à partir du précédent classeur.
Mais c'est bien, d'essayer enfin de comprendre comment ça marche.
 
Dernière édition:

mada16

XLDnaute Nouveau
Merci pour la correction, j'avais remarqué sur d'autres code qu'il y avait quelques explications (en vert généralement) mais sur les tiens,rien. Ca me manquait !!!
comme je te l'ai dit, je comprends pas grand chose mais j'essaie...à mon rythme!!!
Ca chamboulerait l'ordre, et ne faciliterait pas la recherche du N°!!!
Alors si tu me fais une procédure de classement par clic sur la colonne, il faut que sur la feuille arrivée le classement se fasse catégorie par catégorie (entre les lignes grises) car à la fin de la course j'ai besoin des deux classements...

Par contre, j'avais pas remarqué que tu avais changé l'UFmChrono... entre quel et quel fichier???
 

Discussions similaires

  • Question
Microsoft 365 chrono
Réponses
6
Affichages
500
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…