Fonction si

Bonjour à tous,

Bon alors de base j'aime bien me prendre la tête sur excel, mais là je ne sais pas si j'ai une demande qui dépasse mes capacité ou bref...

Venons en au fait :

Ce que je voudrais trouver c'est un calcule d'heures de repas mais avec conditions:

En B5 j'ai l'heure de début de journée
Si cette heure dépasse 11:10 (en M9) alors il n'y a pas de pause repas. (bon jusqu'à la ça va)

par contre si l'heure de début est avant les 11:10 alors il doit y avoir 4 possibilités

1h de coupure = "IRU"
Entre 30 min et 1h = "IS"
Moins de 30 min = "IR"
Si il n'y a pas de coupure = "pas de coupure"

J'espère avoir été un peu claire.

Merci et bon courage

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    Comment dans le fichier est indiqué le temps de pause ? par une durée ? ou par une heure de début de pause et une heure de fin de pause ?
    Le plus simple, comme d'habitude) poster un exemple de ton fichier sur cjoint.com, faire créer un lie, le copier et revenir l'indiquer ici

    Cdlmnt
    Via
  2. Bonjour,

    En relisant la demande je pense avoir enfin compris,
    le problème avec la conversion des heures en décimale ou la comparaison d'une durée en fonction d'un calcul, il reste souvent des décimales parasites qui fausse le résultat.
    je te propose soit de créer dans une cellule hors champ cette formule exemple en F20
    =TRONQUE(((HEURE(M9)-HEURE(B5))*60)+MINUTE(M9)-MINUTE(B5))
    puis cette formule
    =SI(B5="";"";SI(F20>=60;"IRU";SI(F20>=30;"IS";SI(F20>0;"IR";"pas de coupure"))))

    il est possible de traiter le problème directement avec une formule type usine à gaz

    =SI(B5="";"";SI(TRONQUE(((HEURE(M9)-HEURE(B5))*60)+MINUTE(M9)-MINUTE(B5))>=60;"IRU";SI(TRONQUE(((HEURE(M9)-HEURE(B5))*60)+MINUTE(M9)-MINUTE(B5))>=30;"IS";SI(TRONQUE(((HEURE(M9)-HEURE(B5))*60)+MINUTE(M9)-MINUTE(B5))>0;"IR";"pas de coupure"))))
    1. Bonjour Mike-31,

      En cas de coupure de gaz dans l'usine, on doit pouvoir utiliser :
      =SI(M9-B5>=1/24;"IRU";SI(M9-B5>=1/48;"IS";SI(M9-B5>0;"IR";"pas de coupure")))

      Qu'en penses-tu ?

      A+
      1. Re,

        Ah oui bien vu le 1/48, par contre si tu mets 10:10 en B5 cela fait bien 1 heure donc IRU et comme mes formules le résultat est erroné avec comme résultat IS due à ces décimales parasites qui s'affichent entre les dixièmes et treizième décimales, mais peut être le demandeur s'en accommodera.

        problème de décimale soulevé de nombreuses fois comme dans ces deux discussions
        https://forums.commentcamarche.net/forum/affich-32216517-decimales-capricieuses

        https://forums.commentcamarche.net/forum/affich-30073783-erreur-de-calcul-dans-excel-a-la-13eme-decimale
        cordialement
        A+
        Mike-31

        Une période d'échec est un moment rêvé pour semer les graines du savoir.
        1. Bonjour,

          Si besoin, le problème de décimale peut être réglé avec un ARRONDI

          =SI(ARRONDI(M9-B5;10)>=1/24;"IRU";SI(ARRONDI(M9-B5;10)>=1/48;"IS";SI(ARRONDI(M9-B5;10)>0;"IR";"pas de coupure")))

          A+
          1. Cela voudrait donc dire que je dois passer mes heure en centiminutes?

            Merci
          2. @mantanosNon, l'arrondi est utilisé pour pallier le problème de calcul des nombres à virgule flottante.

            Exemple :
            Avec M9=11:10 et B5=10:10, on obtient M9-B5=01:00
            Au format nombre à 16 décimales, cette valeur est 0,0416666666666666
            Pour Excel, l'heure vaut 1/24 = 0,0416666666666667
            Cet écart sur la seizième décimale est suffisant pour que l'égalité M9-M5 = 1h00 ne soit plus vérifiée.

            Par contre, si on prend l'arrondi à la dixième décimale de ces deux valeurs, soit 0,0416666667, on obtient bien l'égalité M9-M5= 1h00

            A+