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