XL 2013 [RESOLU]. VBA: Multi-chrono

Markotxe

XLDnaute Nouveau
Bonjour,
J'ai réalisé un chronomètre (voir fichier joint) qui permet de façon assez instinctive de contrôler des séries de type "Farthley". Le programme fonctionne bien et je le laisse volontiers à disposition des personnes qui seraient intéressées.
Cependant afin de boucler le projet, j'aimerais avoir plusieurs chronos qui fonctionneraient indépendamment et qui conserveraient les mêmes caractéristiques.

Après avoir cherché sur le forum, testé plusieurs scénarios, force est de constater que je reste bloqué. C'est pourquoi, je sollicite vos compétences. Pistes, solutions, suggestions , astuces sont toutes les bienvenues.



Merci de votre attention.
 

Pièces jointes

  • SAM CRONO.xls
    1.2 MB · Affichages: 56
Dernière édition:

Markotxe

XLDnaute Nouveau
Bonjour Dranred,
Juste un message pour donner un compte rendu des nouvelles évolutions, je lache rien!

Comme mentionné plus haut, je me suis attaqué à Userform, afin de le rendre plus fonctionnel et plus en adéquation avec le résultat recherché.
C'est chose faite (à quelques détails prêt…) mais il marche.

Maintenant, je reviens sur la problématique antérieure à savoir récupérer les temps dans un tableau. La Macro que vous m'aviez facilitée me donne message erreur 91.
J'ai suivi vos instructions en implantant un espion sur Target et TUFmChrono. Le problème persiste et l'espion déclare que "l'expression ne s'est pas définie dans son contexte…"

Votre dernier message laisse entendre que pour que "la Worksheet_Change puisse marcher il faudrait que les chronomètres aient été enregistrés (?)dans le tableau TUFmChrono (de quel tableau parle t'on?) au moment de leur création".
Question: Dans ce cas, comment fait-on pour enregistrer les Chronometres dans un tableau?

Bien cordialement, merci pour votre patience.
 

Dranreb

XLDnaute Barbatruc
Garnissez vos cellules comme vous voulez au moment où vous voulez, les temps des chronomètres ce sont leurs propriétés Value.
Je parlait du tableau global déclaré Private TUFmChrono(1 To 7) As UFmChrono en tête du module de l'objet Worksheet de la feuille.
Voir la procédure Worksheet_Activate, elle y enregistre les exemplaires des chrononomètres qu'elle crée.
 

Markotxe

XLDnaute Nouveau
Le truc, c'est que les chronos doivent rester fonctionnels, ils seront amenés à chronométrer une quarantaine de personnes (par groupe de 6,7 en départ différé). Du coup la combox semble un bon compromis.
Facile à utiliser et assez intuitif pour un néophite. (comme moi…).
 

Dranreb

XLDnaute Barbatruc
Moi je vous le déconseille, maintenant vous faites ce que vous voulez.
Peut être auriez vous intérêt à déclarer en tête de l'UserForm :
VB:
Public Cible As Range
Et juste avant de la End Sub de la ImgBtnRouge_MouseDown :
VB:
   If Not Cible Is Nothing Then Cible.Value = Temps / 86400
Dans la feuille vous pouvez à l'aide d'un bouton ActiveX attribuer un nouveau chronomètre à une personne sélectionnée dans une plage.
Plus besoin de les mettre dans un tableau VBA.
VB:
With New UFmChrono: .Caption = NomDeLaPersonne: Set .Cible = LaCellule: .Left = Rnd * 100 + 50: .Top = Rnd * 100 + 50: End With
Vous les promenez où ça vous arrange pour qu'ils ne se chevauchent pas, vous fermez ceux dont vous n'avez plus besoin (s'agirait pas d'en avoir une quarantaine d'affichés, quand même).
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui, en utilisant Selection certainement pour y prendre le nom et la cellule cible

Ou alors, plus simple: Dans une Worksheet_SelectionChange et les infos d'après Target !
En veillant à ce que ça ne se s'exécute que si la cellule sélectionné est dans une colonne de temps ou de noms, comme vous préférez.
 
Dernière édition:

Markotxe

XLDnaute Nouveau
Bonjour le forum, bonjour Dranred,
Je ne voulais pas continuer ce fil sans avoir au préalable avancé dans ce projet.
Il devient magnifique et merci à vous Dranred, c’est bien grâce à vous!

Trois détails cependant qui dépassent mes compétences m’incitent à nouveau à vous solliciter.

1- J’aimerais de la même manière qu’on exporte les temps via le bouton ActiveX, exporter le nom de la personne...

2- Comment peut-on exporter une valeur depuis la table vers le texbox d’un userform? (Sachant que dans notre cas il y a pratiquement autant d’userforms que de lignes et que tous ont des caractéristiques propres)

3- Et pour terminer 86400, qu’est ce que c’est?
Le nombre de secondes dans une journée?
Du coup si on veut avoir les temps des chronos sous le format mm:ss,00 (au lieu de hh:mm:ss,00) ne suffirait-il pas diviser 86400 par 24, no?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il sert à quoi cet autre UserForm ? L'idée c'était de mettre des temps en face de noms en créant un UFmChrono quand on sélectionne la cellule.
Je l'ai d'alleurs ajouté dans mon classeur de démo Progression.xlsm :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Intersect(Me.[TabChrono], Target(1, 1)) Is Nothing Then Exit Sub
   Set Target = Intersect(Me.[TabChrono], Target(1, 1).EntireRow)
   With New UFmChrono
      .Caption = Target.Columns(1).Value
      Set .Cible = Target.Columns(2)
      .Left = 200 * Rnd + 500
      .Top = 200 * Rnd + 200
      End With
   End Sub
Oui c'est le nombre de secondes dans un jour. Non, que le format de cellule prévoie on non l'édition de l'heure les durées et moments sont toujours enregistrés en jours dans Excel. Or l'UFmChrono travaille en secondes d'ou la division pour transformer en jours.
 
Dernière édition:

Markotxe

XLDnaute Nouveau
Oui effectivement, quelques explications s’imposent. Disons que je ne voulais pas trop rentrer dans les détails et rester dans le vif du sujet.

Bref, j’ai adapté l’userform chrono aux nécessité du terrain.
L’intérêt était de pouvoir couvrir un certain type de travail qui prend en compte des séries des temps de repos etc...

J’ai donc rajouté un bouton de “pause” et un bouton ”lecture”
Ces deux boutons arrêtent le chrono et le remettent à zéro.
Ça permet de contrôler le temps d’effort et de repos.

J’ai rajouter deux textbox
- Le premier précise si la personne est en repos ou en exercice.
- Le deuxième est censé indiquer combien de répetitions la personnes a faites ou est en train de faire.
C’est pour ça que je vous demandais dans le point 2 du précédent message s’il y avait moyen d’exporter des données personnalisées depuis la feuille jusqu’au chrono.

Pour revenir, au temps de repos et de travail. Depuis l’active x, on exporte toutes les données de tout le monde dans la même cellule.

Depuis la macro de l’userform, on déclenche une macro ou une autre qui redistribuent et séparent les temps de repos des temps d’exercices.
C’est pour ça qu’on a besoin de voir apparaître le nom de la personne en même temps et à côté des temps. Pour pouvoir les redistribuer au bon endroit.

Je suis pas certain, d’être très clair mais dés que j’aurais terminé. Je vous mettrais ici une version dépersonnalisée du projet. N’en doutez pas.
En attendant, je m’en vais tester votre nouveau code.

On reprend très vite contact.
Merci Dranred!
 
Dernière édition:

Markotxe

XLDnaute Nouveau
Bonjour Dranred.

Je m'aperçois que je ne suis vraiment pas clair dans mes explications et requêtes. J'ai donc préparé un document, qui. je l'espère saura être plus explicite.

J'y ai mis en rouge les requêtes souhaitées.
 

Pièces jointes

  • SAM Cron.xls
    152.5 KB · Affichages: 7

Statistiques des forums

Discussions
314 540
Messages
2 110 569
Membres
110 841
dernier inscrit
Hlezin