Nombres d'heures restantes (ou passés). Comment faire svp ? [Résolu !^^]

anthoYS

XLDnaute Barbatruc
Bonsoir,

Voilà dans le fichier ci-joint des dates avec des heures de RDV.

Je veux en fait, rajouter dans le décompter, les heures restantes/ou passé et/ou minutes.

Voila la formule typique en G2 :
Code:
=SI(F2="";"";SI(F2-AUJOURDHUI()=0;"Aujourd'hui";SI(F2-AUJOURDHUI()=1;"Demain";SI(AUJOURDHUI()-F2=1;"Hier";SI(F2>AUJOURDHUI();"Dans "&SI(DATEDIF(AUJOURDHUI();F2;"y")>0;DATEDIF(AUJOURDHUI();F2;"y")&" ans ";"")&SI(DATEDIF(AUJOURDHUI();F2;"ym")>0;DATEDIF(AUJOURDHUI();F2;"ym")&" mois ";"")&SI(DATEDIF(AUJOURDHUI();F2;"md")>0;DATEDIF(AUJOURDHUI();F2;"md")&" jours ";"");"Il y a "&SI(DATEDIF(F2;AUJOURDHUI();"y")>0;DATEDIF(F2;AUJOURDHUI();"y")&" ans, ";"")&SI(DATEDIF(F2;AUJOURDHUI();"ym")>0;DATEDIF(F2;AUJOURDHUI();"ym")&" mois et ";"")&SI(DATEDIF(F2;AUJOURDHUI();"md")>0;DATEDIF(F2;AUJOURDHUI();"md")&" jours";"tout juste"))))))

Si vous avez idée je suis preneur.​


Merci par avance.

à+
 

Pièces jointes

  • HeuresRestantes.xls
    23 KB · Affichages: 87

job75

XLDnaute Barbatruc
Re : Nombres d'heures restantes (ou passés). Comment faire svp ?

Bonsoir anthoYs, néné06,

Utilisez les fonctions HEURE et MINUTE à la fin de la formule.

Sur Excel 2003 en G2 :

Code:
=SI(F2="";"";SI(F2-AUJOURDHUI()=0;"Aujourd'hui";SI(F2-AUJOURDHUI()=1;"Demain";SI(AUJOURDHUI()-F2=1;"Hier";SI(F2>AUJOURDHUI();"Dans "&SI(DATEDIF(AUJOURDHUI();F2;"y")>0;DATEDIF(AUJOURDHUI();F2;"y")&" ans ";"")&SI(DATEDIF(AUJOURDHUI();F2;"ym")>0;DATEDIF(AUJOURDHUI();F2;"ym")&" mois ";"")&SI(DATEDIF(AUJOURDHUI();F2;"md")>0;DATEDIF(AUJOURDHUI();F2;"md")&" jours ";"");"Il y a "&SI(DATEDIF(F2;AUJOURDHUI();"y")>0;DATEDIF(F2;AUJOURDHUI();"y")&" ans, ";"")&SI(DATEDIF(F2;AUJOURDHUI();"ym")>0;DATEDIF(F2;AUJOURDHUI();"ym")&" mois et ";"")&SI(DATEDIF(F2;AUJOURDHUI();"md")>0;DATEDIF(F2;AUJOURDHUI();"md")&" jours";"tout juste")))))&" et "&HEURE(ABS(MAINTENANT()-F2))&" heures "&MINUTE(ABS(MAINTENANT()-F2))&" minutes")
Sur Excel 2007/2010 :

Code:
=SI(F2="";"";SUPPRESPACE(SI(F2-AUJOURDHUI()=0;"Aujourd'hui";SI(F2-AUJOURDHUI()=1;"Demain";SI(AUJOURDHUI()-F2=1;"Hier";SI(F2>AUJOURDHUI();"Dans "&SI(DATEDIF(AUJOURDHUI();F2;"y")>0;DATEDIF(AUJOURDHUI();F2;"y")&" ans ";"")&SI(DATEDIF(AUJOURDHUI();F2;"ym")>0;DATEDIF(AUJOURDHUI();F2;"ym")&" mois ";"")&SI(DATEDIF(AUJOURDHUI();F2;"md")>0;DATEDIF(AUJOURDHUI();F2;"md")&" jours ";"");"Il y a "&SI(DATEDIF(F2;AUJOURDHUI();"y")>0;DATEDIF(F2;AUJOURDHUI();"y")&" ans, ";"")&SI(DATEDIF(F2;AUJOURDHUI();"ym")>0;DATEDIF(F2;AUJOURDHUI();"ym")&" mois et ";"")&SI(DATEDIF(F2;AUJOURDHUI();"md")>0;DATEDIF(F2;AUJOURDHUI();"md")&" jours";"tout juste")))))&" et "&HEURE(ABS(MAINTENANT()-F2))&" heures "&MINUTE(ABS(MAINTENANT()-F2))&" minutes"))
Sur Excel 2003 le nombre d'imbrications de fonctions est limité à 8 et ne permet pas d'ajouter SUPPRESPACE.

A+
 

job75

XLDnaute Barbatruc
Re : Nombres d'heures restantes (ou passés). Comment faire svp ?

Bonjour anthoYs, le forum,

L'idée était bonne mais incomplète car il fallait dormir.

En effet il faut éventuellement retrancher 1 jour à F2 ou à AUJOURDHUI() suivant que l'heure de F2 est inférieure ou supérieure à l'heure de MAINTENANT().

Sur Excel 2003 la formule est proche du maximum de caractères autorisés (1024) :

Code:
=SI(F2="";"";SI(F2>MAINTENANT();"Dans "&REPT(DATEDIF(AUJOURDHUI();F2-(MOD(F2;1)<MOD(MAINTENANT();1));"y")&" ans ";DATEDIF(AUJOURDHUI();F2-(MOD(F2;1)<MOD(MAINTENANT();1));"y")>0)&REPT(DATEDIF(AUJOURDHUI();F2-(MOD(F2;1)<MOD(MAINTENANT();1));"ym")&" mois ";DATEDIF(AUJOURDHUI();F2-(MOD(F2;1)<MOD(MAINTENANT();1));"ym")>0)&REPT(DATEDIF(AUJOURDHUI();F2-(MOD(F2;1)<MOD(MAINTENANT();1));"md")&" jours ";DATEDIF(AUJOURDHUI();F2-(MOD(F2;1)<MOD(MAINTENANT();1));"md")>0);"Il y a "&REPT(DATEDIF(F2;AUJOURDHUI()-(MOD(MAINTENANT();1)<MOD(F2;1));"y")&" ans, ";DATEDIF(F2;AUJOURDHUI()-(MOD(MAINTENANT();1)<MOD(F2;1));"y")>0)&REPT(DATEDIF(F2;AUJOURDHUI()-(MOD(MAINTENANT();1)<MOD(F2;1));"ym")&" mois et ";DATEDIF(F2;AUJOURDHUI()-(MOD(MAINTENANT();1)<MOD(F2;1));"ym")>0)&REPT(DATEDIF(F2;AUJOURDHUI()-(MOD(MAINTENANT();1)<MOD(F2;1));"md")&" jours ";DATEDIF(F2;AUJOURDHUI()-(MOD(MAINTENANT();1)<MOD(F2;1));"md")>0))&REPT("et ";ENT(F2)<>AUJOURDHUI())&HEURE(ABS(MAINTENANT()-F2))&" heures "&MINUTE(ABS(MAINTENANT()-F2))&" minutes")
J'ai donc allégé la formule (voir 2ème fichier) en utilisant les noms définis fin1 et fin2 :

Code:
=SI(F2="";"";SI(F2>MAINTENANT();"Dans "&REPT(DATEDIF(AUJOURDHUI();fin1;"y")&" ans ";DATEDIF(AUJOURDHUI();fin1;"y")>0)&REPT(DATEDIF(AUJOURDHUI();fin1;"ym")&" mois ";DATEDIF(AUJOURDHUI();fin1;"ym")>0)&REPT(DATEDIF(AUJOURDHUI();fin1;"md")&" jours ";DATEDIF(AUJOURDHUI();fin1;"md")>0);"Il y a "&REPT(DATEDIF(F2;fin2;"y")&" ans, ";DATEDIF(F2;fin2;"y")>0)&REPT(DATEDIF(F2;fin2;"ym")&" mois et ";DATEDIF(F2;fin2;"ym")>0)&REPT(DATEDIF(F2;fin2;"md")&" jours ";DATEDIF(F2;fin2;"md")>0))&REPT("et ";ENT(F2)<>AUJOURDHUI())&REPT(HEURE(ABS(MAINTENANT()-F2))&" heures ";HEURE(ABS(MAINTENANT()-F2))>0)&MINUTE(ABS(MAINTENANT()-F2))&" minutes")
Dans cette dernière formule 0 heures ne s'affiche pas.

Nota 1 : j'ai bien entendu supprimé les textes "Aujourd'hui" "Hier" Demain" "tout juste".

Nota 2 : j'ai remplacé les tests SI(X>0;Y;"") par REPT(Y,X>0) qui utilise moins d'octets en mémoire.

Edit : il peut y avoir une "erreur" apparente de 1 minute sur les minutes restantes : c'est à cause des secondes dans MAINTENANT().

A+
 

Pièces jointes

  • HeuresRestantes(1).xls
    31.5 KB · Affichages: 46
  • HeuresRestantes(1) formule allégée.xls
    39 KB · Affichages: 48
Dernière édition:

job75

XLDnaute Barbatruc
Re : Nombres d'heures restantes (ou passés). Comment faire svp ?

Re,

Pour régler le problème de la minute manquante (Edit post #4), j'utilise maintenant le nom défini dif.

Nouvelle formule (allégée) en G2 :

Code:
=SI(F2="";"";SI(F2>MAINTENANT();"Dans "&REPT(DATEDIF(AUJOURDHUI();fin1;"y")&" ans ";DATEDIF(AUJOURDHUI();fin1;"y")>0)&REPT(DATEDIF(AUJOURDHUI();fin1;"ym")&" mois ";DATEDIF(AUJOURDHUI();fin1;"ym")>0)&REPT(DATEDIF(AUJOURDHUI();fin1;"md")&" jours ";DATEDIF(AUJOURDHUI();fin1;"md")>0);"Il y a "&REPT(DATEDIF(F2;fin2;"y")&" ans, ";DATEDIF(F2;fin2;"y")>0)&REPT(DATEDIF(F2;fin2;"ym")&" mois et ";DATEDIF(F2;fin2;"ym")>0)&REPT(DATEDIF(F2;fin2;"md")&" jours ";DATEDIF(F2;fin2;"md")>0))&REPT("et ";ENT(F2)<>AUJOURDHUI())&REPT(HEURE(dif)&" heures ";HEURE(dif)>0)&MINUTE(dif)&" minutes")
Fichier (2).

A+
 

Pièces jointes

  • HeuresRestantes(2) formule allégée.xls
    39 KB · Affichages: 50

Statistiques des forums

Discussions
312 321
Messages
2 087 264
Membres
103 500
dernier inscrit
Suk Ram