@Jean-Eric
pour transformer une donnée de départ avec virgule en la même donnée avec point au lieu de la virgule, ta méthode utilise ceci :
x = Val(x) / 86400
x = WorksheetFunction.Text(x, "hh:mm:ss.00")
...
.NumberFormat = "@"
.Value = x
comparaison de nos 2 méthodes :
* à gauche, ma méthode retourne exactement les mêmes nombres sans aucune perte de précision !
* tes 3 autres résultats sont carrément complètement faux !
00:00:01.00 au lieu de 00:00:10.04
00:00:01.00 au lieu de 00:00:12.00
00.00.00.00 au lieu de 15.12.59.85
je ne peux donc pas valider ta méthode !
désolé de te gâcher ton plaisir, mais pour le fun, tu repasseras :
tu peux revoir ta copie !
voici le fichier que j'ai utilisé pour tester ta méthode :
Ctrl e ➯ mauvais résultats de la méthode Jean-Eric
dans mon code, ta variable x de type Variant est n, en double précision : Dim n#
mais même en mettant Dim n (donc Variant), j'ai les mêmes mauvais résultats.
Option Explicit
Sub Essai()
Dim n#, dlig&, lig&: Application.ScreenUpdating = 0
dlig = Cells(Rows.Count, 1).End(xlUp).Row
For lig = 2 To dlig
n = Val(Cells(lig, 1)) / 86400
With Cells(lig, 2)
.NumberFormat = "@": .IndentLevel = 1
.Value = WorksheetFunction.Text(n, "hh:mm:ss.00")
End With
Next lig
End Sub
mes excuses d'avance si j'me suis trompé !
dhany