Bonjour,
J'ai écris une petite fonction toute simple avec l'editeur VB d'excel mais quand je l'appel pour certaines valeurs j'ai une erreur #Valeur! que je n'arrive pas à comprendre et si je diminue juste le nombre du 1er champ en dessous de 10, plus erreur.

Mieux qu'un long discours le code :
dans cellule excel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
=secToTimestamp(8;39;32.1;3700.2)
Retourne : 9:41:12.300000 (ce qui me convient)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
=secToTimestamp(9;39;32.1;3700.2)
Retourne: #VALEUR! alors que l'on a juste ajouté fait 8+1=9
Toutes les valeurs supérieures à 8 pour le champ de heures retournent ce code d'erreur.

Code de la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
'Conversion du nbr secondes en heures minutes secondes avec ajout d'une heure de départ
' Exemple pour 14h21min31.2658s et 369.253698
' StartH =14 StartM= 21 StartS= 31.2658 secNbr =369.253698
' Resultat 14:27:40.519498
 
Function secToTimestamp(StartH As Integer, StartM As Integer, StartS As Double, secNbr As Double) As String
 
 
Dim hours As Integer
Dim hours_res As Integer
Dim minutes As Integer
Dim sec As Double
 
secNbr = secNbr + StartS + StartM * 60 + StartH * 3600
 
hours = secNbr \ 3600
minutes = (secNbr - hours * 3600) \ 60
sec = secNbr - (60 * minutes) - (3600 * hours)
secToTimestamp = hours & ":" & minutes & ":" & FormatNumber(sec, 6, vbFalse, vbFalse, vbFalse)
 
End Function