Chrono course de côte

Lone-wolf

XLDnaute Barbatruc
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! . ;):mad::D
 

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! . ;):mad::D
Je vois que l'humour est de sortie:D
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 Tourmaleto_Oo_O
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 perduo_O
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...
 

Fichiers joints

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

Dranreb

XLDnaute Barbatruc
Celui du poste #78 était déjà équipé de nouvelles méthodes documentées dans l'UserForm.
Celui ci est encore un peu plus étoffé.
 

Fichiers joints

mada16

XLDnaute Nouveau
AAHHH YYYEESS !!!!
Je l'ai regardé vite fait (j'ai pas trop le temps ce midi) mais ça m'a l'air d'être excellent.
Je regarde ça plus en détail ce soir, merci encore pour le boulot.
A+++
 

mada16

XLDnaute Nouveau
Salut Dranred, salut le forum,

voilà, j'ai eu le temps de regarder en détail...et je confirme, c'est excellent, presque parfait!!!
Il y a cependant quelques détails qui coincent.

1 j'ai vu que tu avais "codé" une incrémentation des N° de kart au fur et à mesure que l'on sélectionnait la case et que l'on inscrivait un horaire. Ca, il faut le retirer, parce que sur ce genre d'épreuve (comme sur beaucoup d' autres en kart) c'est le pilote qui choisit son N° lors de l'inscription. On se retrouve donc généralement avec des N° "abracadabrantesque", genre 333, 123 ou 69, alors qu'il n'y a que 40 pilotes engagés. Il faut qu'on ait la possibilité de remplir cette case avant la course, hors pour l'instant dés qu'on clique dessus, le userform se déclenche et on a pas la possibilité d'écrire.

2 c'est au niveau de la mobilité des userform. Ils sont bien positionnés, et suivent la feuille...mais parfois la feuille est bloquée. En fait qu'elle soit bloquée quand l'horaire défile (avant l'appui sur barre espace) est très bien, mais ensuite, une fois qu'on a inscrit l'horaire dans la case et que le voyant est rouge, il faut pouvoir aller chercher un autre kart, parfois en dehors de la feuille, et là on est obligé de cliquer sur une case au hasard (en dehors des cases N° de kart) pour récupérer la mobilité de la page par le "scroll souris"

3 Le tri: très bien pour la feuille départ qui servira pour le classement scratch. Par contre sur la feuille arrivée, je voudrais pouvoir faire un classement par catégorie. Mais ça, si tu veux, je pourrai le refaire par l'intermédiaire des macros et des boutons, j'ai réussi sur le fichier précédent, je dois pouvoir réitérer l'exploit...

Dernière question, elle vient d'un collègue à qui j'ai montré le fichier précédent, y a t il la possibilité de rajouter une colonne ( entre "nom" et "cat") sans mettre le bordel dans les codes? Ce serait pour y inscrire le nom du club du pilote.
Je te joins le fichier que j'ai modifié (juste rajout de colonne, et pré-positionnement des catégories)
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
J'ai mis ce dispositif pour l'inscription, justement afin d'être gêné le moins souvent possible par l'UFmChrono qui à tendance à s'afficher quand on sélectionne une cellule de la colonne A.
Je ne peux rien faire pour rendre la fenêtre Excel active quand c'est l'UFmChrono qui l'est. Le laisser se masquer n'aurait pas introduit ce problème..
Pour faire le classement par catégorie, classer d'abord par Temps ensuite par Cat (toujours en sélectionnant les titres de ces colonnes)
Oui c'est un des avantage des plages mises sous forme de tableaux: les macros peuvent s'appuyer sur leurs titres.
que veux tu que je fasse du classeur joint, compte tenu des présentes réponses ?
 

mada16

XLDnaute Nouveau
OK pour les remarques 2,3,et 4!!
Pour la mobilité, c'est pas le plus important, on fera avec, c'est une question d'habitude. Pour le tri, ça marche et pour la colonne sup aussi.
Par contre pour le 1, si j'ai bien compris, on pourra pas mettre le N° qu'on veut tant qu'on fera sélectionner l'UFmchrono par la colonne A.
Et c'est important, tu comprendras qu'on ne peut pas attribuer le N° au kart après son départ, et comme il y a toujours des abandons entre les différentes manches de l'épreuve, on ne pas être certain non plus que l'ordre de départ sera toujours 1,2,3,4,5,6,etc, il pourrait être 1,2,4,6,8,9, etc...
Donc afin de remédier à ça, j'ai créé une colonne supplémentaire que j’ai appellé N° de kart, et j'ai renommé la colonne A en "ordre de départ".
Il y aura eu une petite gymnastique visuelle (rechercher le N° puis glisser horizontalement vers la colonne A avant de la sélectionner) mais pas trop grave puisque pour inscrire l'horaire, il faut cliquer sur la barre d'espace.

Dernier petit détail, est il possible de mettre une petite sécurité avant l'effacement des temps, genre "êtes vous sûr de vouloir effacer les temps" avec un "oui" et un "non"???
 

Dranreb

XLDnaute Barbatruc
Non mon idée ce n'était pas d'attribuer un N° de kart après le départ. Bon, le dispositif réagit comme ça quand il n'y a pas de numéro, c'est tout, mais ce n'est pas pour qu'on le laisse vide avant le départ. l'idée c'était que ça se fasse notamment en renseignant le nom.
On peut toujours demander la fermeture d'UFmChrono en cas de besoin et taper quelque chose d'autre dans la colonne A, le dispositif ne réagit que si cette colonne est vide.
On doit pouvoir classer aussi en sélectionnant le titre de cette nouvelle colonne du vrai N° de Kart si ça arrange.
Oui, ça s'écrit comme ça :
VB:
If MsgBox("Êtes vous sûr de vouloir effacer les temps ?", _
   vbYesNo + vbExclamation, "RàZTemps") = vbNo Then Exit Sub
 

mada16

XLDnaute Nouveau
salut Dranreb,

OK c'est tout bon, ça fonctionne!!!!
Pour la petite sécu avant effacement des temps, je l'ai inclus dans le code, mais ça m'efface systématiquement les temps, que je réponde oui ou non...
Je dirais même que ça les efface avant même de répondre....
 

Dranreb

XLDnaute Barbatruc
Il faut bien évidemment mettre l'instruction avant d'effacer, pas après, ça va de soit, non ?
Comment vous avez écrit ça ?
 

mada16

XLDnaute Nouveau
Je l'ai écrit comme ça...

Sub RAZTEMPS()
'
' RAZTEMPS Macro
' remise à zéro des horaires de départ et d'arrivée
'
Dim LO As ListObject
Set LO = ActiveSheet.ListObjects(1)
LO.ListColumns("Heure départ").DataBodyRange.ClearContents
LO.ListColumns("Heure arrivée").DataBodyRange.ClearContents
If MsgBox("Êtes vous sûr de vouloir effacer les temps ?", _
vbYesNo + vbExclamation, "RàZTemps") = vbNo Then Exit Sub
End Sub
 

Discussions similaires


Haut Bas