Bonjour à toutes et à tous,
je suis à la recherche de la fonction qui en VBA permet de décomposer l'écart entre deux dates pour présenter cette différence en nombre de :
année(s) puis
jour(s) restant(s) puis
heure(s) restante(s) puis
minute(s) restante(s) puis
seconde(s) restante(s)
J'insiste sur la notion de restant car pour l'instant je n'arrive qu'à convertir l'écart en autant de années ou jour ou heure ou minutes ou seconde mais pas à décomposer les reliquats
Ex entre le 18/03/2014 à 14 : 30 et le 20/03/2015 à 14:30 il y a 1 an et 2 jour et 0 heure et 0 minutes etc
Or, les seules formules que j'arrive à écrire ne font que convertir l'écart exprimé dans l'unité voulue (année, jour, heure, minute ou seconde)
Ainsi pour le même écart, on a 1 année d'écart ou 367 jours ou 8809 heures ou 528450 minutes etc.
Or, j'aurais voulu avoir pour résultat 1 année d'écart + 2 jours et x heures etc.
J'ai vaguement idée que pour exprimer les années, on divise le résultat par 365 et on prend la partie entière puis ce qui est au-dessus de 365 (ici 2) représente le nombre de jours etc.
Le faire à la mano est fastidieux, d'autant que selon les années, on prend 365 ou 366 etc donc pas de règle absolue !
Existe-il une fonction intégrée pour cette décomposition ?
Merci d'avance pour votre aide
Sebastien
je suis à la recherche de la fonction qui en VBA permet de décomposer l'écart entre deux dates pour présenter cette différence en nombre de :
année(s) puis
jour(s) restant(s) puis
heure(s) restante(s) puis
minute(s) restante(s) puis
seconde(s) restante(s)
J'insiste sur la notion de restant car pour l'instant je n'arrive qu'à convertir l'écart en autant de années ou jour ou heure ou minutes ou seconde mais pas à décomposer les reliquats
Ex entre le 18/03/2014 à 14 : 30 et le 20/03/2015 à 14:30 il y a 1 an et 2 jour et 0 heure et 0 minutes etc
Or, les seules formules que j'arrive à écrire ne font que convertir l'écart exprimé dans l'unité voulue (année, jour, heure, minute ou seconde)
Ainsi pour le même écart, on a 1 année d'écart ou 367 jours ou 8809 heures ou 528450 minutes etc.
Or, j'aurais voulu avoir pour résultat 1 année d'écart + 2 jours et x heures etc.
J'ai vaguement idée que pour exprimer les années, on divise le résultat par 365 et on prend la partie entière puis ce qui est au-dessus de 365 (ici 2) représente le nombre de jours etc.
Le faire à la mano est fastidieux, d'autant que selon les années, on prend 365 ou 366 etc donc pas de règle absolue !
Existe-il une fonction intégrée pour cette décomposition ?
Merci d'avance pour votre aide
Sebastien
VB:
[/
Sub Ecart()
Dim Debut As Date
Dim Fin As Date
Dim DeltaAnnee
Dim DeltaJour
Dim DeltaHeure
Dim DeltaMinute
Dim DeltaSeconde
With Sheets("Exemple")
Debut = Range("B3").Value
Fin = Range("C3").Value
DeltaAnnee = DateDiff("yyyy", Debut, Fin)
.Range("D3") = DeltaAnnee
DeltaJour = DateDiff("d", Debut, Fin)
.Range("E3") = DeltaJour
DeltaHeure = DateDiff("h", Debut, Fin)
.Range("F3") = DeltaHeure
DeltaMinute = DateDiff("n", Debut, Fin)
.Range("G3") = DeltaMinute
DeltaSeconde = DateDiff("s", Debut, Fin)
.Range("H3") = DeltaSeconde
End With
MsgBox "L'écart entre le " & Debut & " le " & Fin & " s'élève à " & DeltaAnnee & " an(s)" & " et " & DeltaJour & " jour(s)"
End Sub
code]