Fonction seconde

Bonjour à tous,

J'ai un petit problème avec la fonction seconde :

J'ai un fichier dans lequel j'ai une colonne contenant une durée en format h:mm:ss,cc (heure:minute:seconde,centième). Et je dois convertir cette durée dans un format sss,cc (secondes,centième).

j'utilise donc la formule (un peu compliquée) :

=CONCATENER(TEXTE(60*MINUTE(O5)+SECONDE(O5);"000");".";TEXTE((O5-CONCATENER(TEXTE(HEURE(O5);"00");":";TEXTE(MINUTE(O5);"00");":";TEXTE(SECONDE(O5);"00")))*60*60*100*24;"00"))

En l'occurrence, 05 est la case contenant la durée h:mm:ss,cc.

Le problème de la fonction SECONDE c'est qu'elle arrondit à la seconde près. c'est-à-dire que

0:00:22,29 donne bien 022.29

mais

0:00:06,94 donne 007.-06

ce qui ne me convient pas.

Est-ce quelqu'un a la solution à mon problème?

Merci d'avance

Bonjour,

voici une fonction

Function nb_seconde(tps As Range)
Application.Volatile
x = Cells(tps.Row, tps.Column)
If IsNumeric(x) = False Then
    tmp1 = Split(x, ":")
    x = 0 + tmp1(2)
    nb_seconde = tmp1(0) * 3600 + tmp1(1) * 60 + tmp1(2)
Else
    h = Hour(x)
    m = Minute(x)
    s = Second(x)
    nb_seconde = h * 3600 + m * 60 + s
End If
End Function

Bonjour Dryko

Ta formule oublie les heures...

Cordialement

Bonjour

=SI(A2-TEXTE(A2;"hh:mm:ss")>0;TEXTE(HEURE(A2);"00")*3600+TEXTE(MINUTE(A2);"00")*60+TEXTE(SECONDE(A2);"00")*1&","&TEXTE((ABS(A2-TEXTE(A2;"hh:mm:ss")))*1;"s,00")*100;TEXTE(HEURE(A2);"00")*3600+TEXTE(MINUTE(A2);"00")*60+(TEXTE(SECONDE(A2);"00")*1)-1&","&TEXTE((TEMPSVAL("00:00:01")-(ABS(A2-TEXTE(A2;"hh:mm:ss")))*1)*1;"s,00")*100)

https://www.excel-pratique.com/~files/doc2/secondes.xls

Cordialement

Bonjour,

Ayant aussi besoin de ce type de développement j'ai fait :

Function nb_seconde(tps As Range)
dim x,h,m,s,tmp1
Application.Volatile
x = tps.Text
tmp1 = Split(x, ":")
Select Case UBound(tmp1)
    Case 2 'H:M:S,x
        h = Val(tmp1(0)) * 3600
        m = Val(tmp1(1)) * 60
        s = Replace(tmp1(2), ".", ",")
    Case 1 'H:M:S,x
        h = 0
        m = Val(tmp1(0)) * 60
        s = Replace(tmp1(1), ".", ",")
End Select
nb_seconde = h + m + s
End Function

ceci marche avec les formats suivants:

01:01:01.5

01:01:01,5

Bonjour

Pyrof, ton code fonctionne aussi très bien.

Cordialement

Rechercher des sujets similaires à "fonction seconde"