Calcule différence entre deux dates (avec h) [Résolu/Fermé]

- - Dernière réponse : tontong
Messages postés
2281
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
25 septembre 2019
- 6 janv. 2011 à 16:57
Bonjour à tous,

Je travaille sur un fichier excel et je souhaiterais pouvoir calculer la différence entre deux dates (avec l'heure).
Par exemple : j'ai une première date qui est 2010-06-18 11:41:32 et une seconde qui est 2010-07-09 14:45:12, chacune est dans une colonne et je souhaiterais obtenir la différence dans une troisième colonne afin de connaître la durée écoulée entre les deux.

Comme j'ai beaucoup de lignes je ne peux vraiment pas faire le calcul à chaque fois donc merci par avance de votre aide

j'ignore si ma question a déjà été posée, mais même en cherchant je n'ai pas trouvé de posts qui incluaient la date et l'heure

merci à tous,

bonne soirée et bonne année

je travaille sous windows 7 64 et j'ai excel 2010, merci
Afficher la suite 

6 réponses

Meilleure réponse
5
Merci
Merci Vaucluse d'avoir répondu si vite,
c'est super mais il reste encore un souci, le resultat s'arrête à 31 jours, hors j'ai des écarts de plusieurs années donc il y a moyen d'avoir des compte de plus de jours? ou alors avec mois et années?

Merci encore de ton aide

Dire « Merci » 5

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61055 internautes nous ont dit merci ce mois-ci

Raymond PENTIER
Messages postés
49987
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 octobre 2019
10797 -
D'où l'intérêt de se montrer précis et exhaustif quand tu poses un problème !
Alors si l'écart est de plusieurs années, il y a t-il un intérêt à donner le résultat avec des heures et minutes ? Peut-on se contenter du nombre d'années et de jours, par exemple ?
Désolé pour ce manque de précision.
L'idéal serait d'avoir tout car les profils sont très différents, certains écarts sont de quelques minutes quand d'autres sont de plus de 2ans, mais si c'est possible d'avoir soit
'jours' 'heures' 'minutes' mais en continuant après 31 jours,
soit 'années' 'jours' 'heures'
Messages postés
24482
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
4 octobre 2019
4791
1
Merci
Bonjour
ça dépend un peu de la façon dont sont entrées vos dates.
Si ce sont des textes, il faudra les transformer, si le formatage est date, il suffit de faire la différence des deux formules:
je vous donne ce que j'obtiens en copiant collant les dates que vous donnez selon ce schéma:
en A1: coller 2010-06-18 11:41:32 en format personnalisé > Type >
jj/mm/aaaa hh:mm:ss
devient:18/06/2010 11:41:32
même opération en B1 pour la deuxième date.
en C1, format personnalisé type:
[hh]:mm:ss
B1-A1 donne :
507:03:40
et formatée:
j"j"hh:mm:ss
=21j03:03:040

qui devrait être le bon résultat

crtdlmnt
Messages postés
24482
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
4 octobre 2019
4791
0
Merci
Bonjour

un petit modèle pour faire joujou, sachant que ce n'est pas facile à expliquer.
Revenez si d'une part, l'option vous intéresse et si vous avez quelques difficultés.

http://www.cijoint.fr/cjlink.php?file=cj201101/cijVVs1hrC.xls

crdlmnt

Ps: on peur aussi rajouter un formatage en jour avec la formule de MFC:
=DATEDIF($A1:$B1;"d")>0

et le format:

j" jour(s) "hh:mm:ss

crdlmnt


Bonjour, j'ai essayé votre modèle mais quand je rentre la formule ('=DATEDIF($A1:$B1;"Y")>0 ou =DATEDIF($A1:$B1;"m", et en changeant le numéro des cellules)>0) une fenêtre m'annonce que j'ai tapé un nombre insuffisant d'arguments pour cette fonction, et me suggère de chercher dans l'aides des fonctions mais celle ci n'est pas référencée. Mais en voyant la feuille le résultat semble celui que je souhaiterais atteindre.

Par contre en utilisant le modèle de format de cellule donné (aa" an(s) "m" mois "j" jour(s) "hh:mm:ss, le résultat est plus proche de ce que j'attends, à la seul exception que les mois ont un décalage de 1. Quand il y a moins d'un mois il affiche 1 mois, et quand il y a 11 mois il en affiche 12.
Ainsi 2010-10-25 08:02:42 - 2010-10-24 12:08:21 donne 00 an(s) 1 mois 0 jour(s) 19:54:21
et non 00 an(s) 0 mois 0 jour(s) 19:54:21

et pour 2010-10-26 22:30:50 - 2009-11-07 17:26:27 ça donne 00 an(s) 12 mois 18 jour(s) 05:04:23 au lieu 00 an(s) 11 mois 18 jour(s) 05:04:23 (ça donne aussi 1ans et 12 mois pour un ans et 11mois)

Je reste preneur pour une aide, merci beaucoup pour votre disponibilité, cordialement Bastien.
tontong
Messages postés
2281
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
25 septembre 2019
747 -
bonjour,
Datedif ne prend pas en compte les heures, minutes, secondes et ignore ce qui n'est pas jours, mois, années.
DATEDIF (numéro_de_série; numéro_de_série; Intervalle)
Pour l'argument "intervalle"
"y" : différence en années "m" : différence en mois "d" : différence en jours "ym" : différence en mois, une fois les années soustraites
"yd" : différence en jours, une fois les années soustraites
"md" : différence en jours, une fois les années et les mois soustraits

Si vous voulez utiliser cette fonction il faudra traiter le problème des heures avec une condition: Si( heure_fin< heure début;Date dif compensée;Date dif)
Messages postés
2281
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
25 septembre 2019
747
0
Merci
Bonjour et meilleurs voeux à tous,
On peut aussi proposer une formule:
Si les dates sont en A20 et B20 on peut appliquer la formule:
=ENT(B20-A20)&"j "&"et "&HEURE((B20-A20)-ENT(B20-A20))&"h"&MINUTE((B20-A20)-ENT(B20-A20))&"min"&SECONDE(B20-A20)&"s"

Il est possible d' élaborer une formule analogue qui ferait apparaître des mois de 30 jours. Mais un mois dure 28, 29 ,30, ou 31 jours et il est un peu abusif d'afficher des secondes quand une erreur supérieure à 1 jour est possible.
Messages postés
24482
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
4 octobre 2019
4791
0
Merci
Bonjour tous
effectivement le formatage de cellule ne marche pas, car excel se base sur ses valeurs numériques de 30 jours par mois et 360 par an pour formater!
essayez cette nouvelle solution que je n'ai contrôlé que tr(ès partiellement faute de temps.
http://www.cijoint.fr/cjlink.php?file=cj201101/cijB6QKJpf.xls

en attendant vos conclusions.
crdlmnt
Vaucluse
Messages postés
24482
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
4 octobre 2019
4791 -
Suite .....
Utilisez plutôt ce lien, j'ai modifié le fichier pour éclaircir les textes d'affichage:
http://www.cijoint.fr/cjlink.php?file=cj201101/cij51xuKld.xls
Crdlmnt
Bonjour à tous,

merci vaucluse, le dernier modèle est beaucoup mieux, mais il reste encore un décalage de un pour les jours. Il compteras au minimum un jour même quand il n'y a que quelques heures.
Mais je devrais me débrouiller avec ça ça me semble déjà assez complet

Tontong désolé mais je ne suis pas assez calé en vba pour comprendre tes conseils la première fois et pour la formule elle donne un résultat assez dur à trier après. Mais merci aussi
Cordialement
Vaucluse
Messages postés
24482
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
4 octobre 2019
4791 -
je pense qu'il faut inclure une condition dans le calcul de jour, je l'avais fait mais je l'ai mangé en route
=SI(ENT(A1)<1;MOD(A1-B1;1);SI(DATEDIF(A1;B1;"y")>0;DATEDIF(A1;B1;"y")&" an(s) ";"")&SI(DATEDIF(A1;B1;"ym")>0;DATEDIF(A1;B1;"ym")&" mois ";"")&DATEDIF(A1;B1;"md")+SI(B1-ENT(B1)>A1-ENT(A1);1;0)-SI(B1-ENT(B1)<A1-ENT(A1);1;0)&" jour(s)"&"et "&TEXTE(MOD((B1-ENT(B1))-(A1-ENT(A1));1);"hh:mm:ss"))

soit la parte en gras qui détecte si le dernier jour de la date est complet, sinon retranche un jour...
... mais je ne suis sur de rien :-( et essentiellement du fait qu'on ne créé pas un autre problème en résolvant celui ci !

bonne chance
Ça donne la même chose pour le jour de trop, mais c'est déjà super comme résultat! merci beaucoup à tous c'est gentil de de votre part de m'avoir ôté cette épine du pied.

Bonne journée
Messages postés
2281
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
25 septembre 2019
747
0
Merci
Bonjour,
J'ai modifié la formule proposée par Vaucluse comme suit:
=SI(B2-A2<1;TEXTE(MOD((B2-ENT(B2))-(A2-ENT(A2));1);"hh:mm:ss");SI(MOD(B2;1)-MOD(A2;1)<0;SI(DATEDIF(A2;B2-1;"y")>0;DATEDIF(A2;B2-1;"y")&" an(s) ";"")&SI(DATEDIF(A2;B2-1;"ym")>0;DATEDIF(A2;B2-1;"ym")&" mois ";"")&DATEDIF(A2;B2-1;"md");SI(DATEDIF(A2;B2;"y")>0;DATEDIF(A2;B2;"y")&" an(s) ";"")&SI(DATEDIF(A2;B2;"ym")>0;DATEDIF(A2;B2;"ym")&" mois ";"")&DATEDIF(A2;B2;"md"))&" jour(s)"&"et "&TEXTE(MOD((B2-ENT(B2))-(A2-ENT(A2));1);"hh:mm:ss"))

Sur le principe la première condition "SI(ENT(A1)<1;MOD(A1-B1;1)...est modifiée et le correctif de 1 jour (SI(MOD(B2;1)-MOD(A2;1)<0...) apporté à Datedif (B2-1) est appliqué à tous les termes AMJ et non pas au seul J(md). En effet le fait d'ignorer les heures peut aussi ressurgir sur mois par comble de malchance.
Il reste peut-être des erreurs et certainement des simplifications possibles.
Bon courage.