[Résolu][Calc] Chronomètre Split.

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
los_tintinos
Membre lOOyal
Membre lOOyal
Messages : 42
Inscription : 13 mai 2015 22:15

[Résolu][Calc] Chronomètre Split.

Message par los_tintinos »

Bonjour à tous,
Toujours au prise avec mon fichier pour un cross, je suis en peine avec une macro. Je cherche à avoir le temps de chaque coureur qui passe la ligne d'arrivée.
Pour marquer l'arrivée d'un coureur, je clique sur un bouton qui activera une macro.

Mon idée de base :
J'ai une case avec le temps qui est affiché avec la fonction maintenant qui me sert, à chaque clic, à avoir l'heure d'arrivée. J'ai pu récupéré une macro ici (merci beaucoup aux contributeur pour cette macro) https://forum.openoffice.org/fr/forum/v ... tre#p86660, qui me permet d'avoir l'heure du départ fixe dans une case. Il suffit donc d'avoir la soustraction des deux pour obtenir le temps de course.
J'ai traficoter une macro issue de ce fil qui semble correspondre à mes besoins (nommée SPLIT). Cependant, je n'arrive pas comprendre pourquoi celle-ci ne fonctionne pas dans mon fichier alors que j'arrive à lui faire ce que je veux dans le fichier d'origine(chrono3).

Mon envie serait :
Clic du bouton -» aller à la ligne en-dessous la derniére saisie-» coller l'heure de départ dans le colonne Depart-» coller l'heure d'arrivée dans la colonne arrivée-»FIN, le reste se calcul tout seul.

Je sens que je ne suis pas loin mais ne maitrisant pas vraiment les macro je galére.
Le document en question est là
https://cjoint.com/c/HFkiJUQmodd

Et les macros utilisées ci-dessous.
Merci de votre aide et de vos explications.

Code : Tout sélectionner

REM  *****  BASIC  *****

Option Explicit

Private oSht as Object
Private oCell as Object
'Const oSht = ThisComponent.Sheets.getByName "Feuille1"

Sub Bouton0
oSht = ThisComponent.Sheets.getByName("Course")
oCell = oSht.getCellRangeByName("B2")
Call FixTemp(oCell)
End Sub


Sub FixTemp(oCell)
Dim sTemps as String
sTemps = Time
'Print "sTemps : ", sTemps, spc(1)
oCell.String = sTemps
End Sub

REM  *****  BASIC  *****

Option Explicit

Private oSht as Object
Private oCell as Object
Private oCellIndex as Object
Private nRefBouton as Integer
'Const oSht = ThisComponent.Sheets.getByName "Feuille1"


Sub Split
nRefBouton = 8
Call FixTemp2(nRefBouton)
End Sub

Sub FixTemp2(nRefBouton)
Dim sTemps as String
Dim nIndex as Integer
sTemps = Time
'Print "sTemps : ", sTemps, spc(1)
oSht = ThisComponent.Sheets.getByName("Course")
oCellIndex = oSht.getCellByPosition(7,14)
nIndex = 0
Do While oCellIndex.CellStyle = "Noir"
	nIndex = nIndex+1
	oCellIndex = oSht.getCellByPosition(9,nIndex+2)
Loop
'Print "nIndex", nIndex, spc(1)
oCellIndex.CellStyle = "Noir"
oCell = oSht.getCellByPosition(nRefBouton,nIndex+2)
oCell.CellStyle = "Noir"
oCell = oSht.getCellByPosition(7,nIndex+2)
oCell.String = sTemps
End Sub

Sub Effacer()
Dim ki as Integer, kj as Integer
oSht = ThisComponent.Sheets.getByName("Course")
For ki = 2 to 20
	For kj = 0 to 12
		oCell = oSht.getCellByPosition(ki,kj)
		oCell.CellStyle = "Standard"
		oCell.String = ""
	Next kj
Next ki
End Sub
Dernière modification par los_tintinos le 10 juin 2018 22:52, modifié 1 fois.
Systeme Utilisé : Ubuntu Gnome Edition 20.04 / Android 10
Version Bureautique : LibreOffice 6.4.7.2 / AndrOpenOffice (A jour)
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Calc] Chronomètre Split.

Message par DLE »

Bonjour,

Le bouton "Split" n'était pas associé à la macro "Split", mais à la macro "Bouton1" qui n'existait pas.
D'autre part le style "Noir" n'était pas défini.
Les listes de validité des colonnes "H" et "G" ont été supprimées, car inutiles.
Les déplacements de colonnes et ligne dans les "getCellByPosition", dans la macro "FixTemps2" ont été corrigés.
Il faut penser à rétablir le style par défaut sur la colonne "H" lors d'une nouvelle course,soit par une macro (à écrire), soit par Menu>Format>Styles>Par défaut.

Le fichier avec les corrections est ici.

Es espérant avoir répondu à votre attente.

Cdlt.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
los_tintinos
Membre lOOyal
Membre lOOyal
Messages : 42
Inscription : 13 mai 2015 22:15

Re: [Calc] Chronomètre Split.

Message par los_tintinos »

Bonsoir,
Merci beaucoup, j'avais en effet laisser le fichier un peu en bordel, je tester plusieurs chose en meme temps.
J'ai étudier vos propositions et remodifier le tout pour pouvoir faire ce que je cherchais.
C'est à dire qu'au clic sur le bouton, la macro colle le contenu de la cellule B2 (contenant l'heure de depart) et affiche l'heure actuelle dans la cellule adjecente. Le tout en se mettant à la ligne à chaque clic.
Tout est enfin fonctionnel. Merci beaucoup pour tout. Je met le bout de code ici au cas ou.

Code : Tout sélectionner

Sub Split
Dim sTemps as String
Dim nIndex as Integer
dim sStart as String
sTemps = Time
oSht = ThisComponent.Sheets.getByName("Course")
oCellIndex = oSht.getCellByPosition(7,12)
nIndex = 0
Do While oCellIndex.CellStyle = "Noir"
	nIndex = nIndex+1
	oCellIndex = oSht.getCellByPosition(7,nIndex+12)
Loop

oCellIndex.CellStyle = "Noir"

oCell = oSht.getCellByPosition(7, nIndex+12)
oCell2  = oSht.getCellByPosition(6, nIndex+12)
ocell0 =  oSht.getCellByPosition(1,1)
oCell.String = sTemps
oCell2.DataArray = oCell0.DataArray
End Sub
et j'ai réussi a refaire une macro pour remettre à zéro le cross

Code : Tout sélectionner

Sub Effacer
dim Efface as string
dim oCell as Object
oSht = ThisComponent.Sheets.getByName("Course")

		oCell = oSht.getCellRangeByName ("G13:H1500")
		oCell.CellStyle = "Par défaut"
		Efface = com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING
		oCell.clearContents (Efface)

Merci encore pour votre aide.
Systeme Utilisé : Ubuntu Gnome Edition 20.04 / Android 10
Version Bureautique : LibreOffice 6.4.7.2 / AndrOpenOffice (A jour)
yyouye
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 23 août 2018 19:11

Re: [Résolu][Calc] Chronomètre Split.

Message par yyouye »

Bonjour,

Je cherche également à créer un fichier pour une course.

je souhaite y insérer un chronomètre.
Que dois-je faire ?

pour l'instant , j'ai une feuille avec une base : dossard, nom d'équipe, equipier 1, équipier 2, Catégorie.

puis une feuille "Résultats" : classement, dossard, nom d'équipe, equipier 1, équipier 2, Catégorie.
Sur cette feuille, lorsque je rentre le numéro de dossard dans le classement (ordre d'arrivée), mes autres cellules se remplissent automatiquement.

A présent, je souhaite avoir un chrono lorsque je rentre un numéro de dossard.... :tesfou:

Puis-je également avoir un classement par catégorie dans une autre colonne ?

Merci d'avance
Yohan
openoffice 2.4 sous MACOS 10.4
los_tintinos
Membre lOOyal
Membre lOOyal
Messages : 42
Inscription : 13 mai 2015 22:15

Re: [Résolu][Calc] Chronomètre Split.

Message par los_tintinos »

Bonsoir,
Ouvre plutôt un nouveau fil de discussion car ta question ne correspond pas au thème de celle-ci.
Et du coup, plutôt que de réinventer la roue, (même si moi aussi j'aime bien faire par moi-même) pourquoi ne pas te servir du fichier que j'ai commencé ici : http://forum.openoffice.org/fr/forum/vi ... 26&t=58198 quitte à l'adapter à tes besoins ou à en discuter sur la discussion en lien, plus on est de fou plus on rit ;-)

Seb
Systeme Utilisé : Ubuntu Gnome Edition 20.04 / Android 10
Version Bureautique : LibreOffice 6.4.7.2 / AndrOpenOffice (A jour)