Bonjour,
Alors voici ma solution. Il y en a d'autres possibles, comme d'habitude.
Il s'agit d'une base de travail, sans fioritures ni contrôles anti-crétin.

Ma macro écrit à partir de la cellule courante, et finalement place le pointeur de cellule sur la dernière écrite.

La seule contrainte est de formater les cellules de temps au format Heure MM:SS,00 ce qui permet de voir les centièmes de secondes (théoriques). On peut se contenter du dixième de seconde avec le format MM:SS,0 ou de la seconde avec le format MM:SS


Sub chronoIci
Dim cellule as object, feuille as object
Dim t as long, x as long, y as long

if MsgBox("Départ !", 1) = 1  then ' page 150-151
  t = GetSystemTicks  ' page 142
  cellule = thisComponent.CurrentSelection ' page 326
  feuille = cellule.Spreadsheet ' page 323
  x = cellule.CellAddress.Column ' page 323
  y = cellule.CellAddress.Row ' page 323
  Do While MsgBox("Top !", 1) = 1  ' page 114
    cellule.Value = (GetSystemTicks -t)/86400000.0 ' page 86
    y = y+1
    cellule = Feuille.getCellByPosition(x, y) ' page 321
  Loop
  thisComponent.CurrentController.select(cellule) ' page 327
end if
End Sub


Utilisation:
Cliquer sur la première cellule de la zone de temps, exemple cellule B2.
Lancer la macro. Pour terminer, cliquer sur Annuler dans le message Top!

Remarque:
Si vous avez cliqué plusieurs fois très rapidement sur OK du message Top! vous aurez remarqué qu'il s'écoule un délai minimal (environ 0,12 à 0,17 seconde entre deux tops sur mon PC).
Je me suis demandé si on pouvait aller plus vite.
Avec plusieurs variantes, MsgBox ou boutons de formulaire, même en faisant un codage plus rapide qui se contente de stocker les SystemTicks dans un tableau, j'obtiens toujours ce délai minimum entre deux tops. Probablement inhérent à la lenteur de OooBasic et API.
C'est pourquoi je trouve que c'est un mauvais chronomètre.

A propos de GetSystemTicks()
Sur un PC elle renvoie un nombre de millisecondes. Mais l'horloge matérielle utilisée pour cela a une période de 16ms environ, et la valeur obtenue a donc cette imprécision.

Voilà :)
Les références aux pages du livre peuvent vous aider à comprendre l'algorithme. Pour la formule : dans une journée il y a 86400 secondes

 Bonne journée
   Bernard

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à