Calcul salaire journalier - créneaux horaires différents

Hello à tous,

Je me casse la tête sur une formule qui je pensais allait être simple, mais finalement je n'y arrive pas et je me tourne vers vous pour un peu d'aide.

Je voudrais calculer le salaire journalier d'une personne, en fonction des paramètres suivants

- Avant 9h : 20€ par heure

- Entre 9h et 18h : 15€ par heure

- Après 18h : 20€ par heure

- Après 8h (depuis le début) de travail continu : 20€ par heure (indépendamment de la tranche horaire)

Alors cette personne peut travailler 2h, 5h ou encore 12h par jour. Elle peut arriver à 7h du matin comme à 15h.

Ce qui est le plus dure pour moi est de traduire en formule le dernier point des heures supplémentaires.

Je vous joins un classeur avec un tableau qui comporte quelques scénarios

En colonne O : résultat manuel

En colonne P : une formule qui ne me donne pas toujours les bons résultats

Merci à vous

PS : je voudrais éviter à tout prix une solution VBA, DA et PQ bienvenus

Bonjour

Un essai avec une fonction personnalisée. Te convient-il ?

Bye !

Bonjour à tous !

Une proposition en P2 ?

=LET(
      h;(B2-A2)*24;
      hm;(MIN(TEMPS(18;0;0);B2)-MAX(TEMPS(9;0;0);A2))*24;
      (h*20)-(hm*5)+SI(h>8;(h-hm)*5;0)
)

Bonjour à tous

@gmb, merci pour ta proposition, il me semble que cela ne génère pas tous les résultats correct, l'avant-dernière ligne du tableau n'obtient pas le bon résultat me semble-t-il. Je ne suis pas fan de VBA (trop inculte )

@jfl, incroyablement courte ta formule, elle me donne les mêmes résultats que ceux que j'ai calculé manuellement, je vais faire encore des tests sur d'autre créneaux, en tout cas c'est génial

Je cherche toujours à apprendre, si il y avait un moyen que tu m'expliques plus en détail la formule, je suis preneur, c'est une folie ta formule

@jfl, je viens d'imaginer un scénario tout simple, arrivée à 6h du matin et départ à 8h du matin, je devrais obtenir 40€, la formule que tu as proposé retourne 45€, une idée ?

Voici une autre proposition que j'ai essayé de mettre au point

=LET(
    arrival; A2;
    departure; B2;
    nineAM; TEMPS(9; 0; 0);
    sixPM; TEMPS(18; 0; 0);
    earlyRate; 20;
    regularRate; 15;
    overtimeRate; 20;
    totalHours; (departure - arrival) * 24;
    earlyHoursBefore9; MAX(MIN(nineAM; departure) - arrival; 0) * 24;
    lateHoursAfter6; MAX(departure - sixPM; 0) * 24;
    regularHoursBeforeOvertime; MIN(8; totalHours) - earlyHoursBefore9;
    overtimeHours; MAX(totalHours - 8; 0);
    payForEarlyHours; earlyHoursBefore9 * earlyRate;
    payForRegularHours; regularHoursBeforeOvertime * regularRate;
    payForOvertimeHours; overtimeHours * overtimeRate;
    totalPay; payForEarlyHours + payForRegularHours + payForOvertimeHours;
    totalPay
)

elle fonctionne quasiment pour tous les scénarios, sauf si j'ai une arrivée à 14h et un départ à 20h, cette formule me retourne 90 au lieu de 100.

Il faut essayer encore des scénarios

à part cela, elle à l'air de fonctionner

Bonjour à tous de nouveau !

Un léger correctif :

=LET(
      h;(B2-A2)*24;
      hm;MAX((MIN(TEMPS(18;0;0);B2)-MAX(TEMPS(9;0;0);A2))*24;0);
      (h*20)-(hm*5)+SI(h>8;(h-hm)*5;0)

)

Cette contribution est basée sur la logique suivante :

  • Détermination des heures : variable h (au taux fictif de 20€/hre)
  • Correction rémunération pour les heures 9-18 : variable hm
  • Intégration de la majoration horaire si h>8 : SI(h>8;(h-hm)*5;0)

... il me semble que cela ne génère pas tous les résultats correct, l'avant-dernière ligne du tableau n'obtient pas le bon résultat me semble-t-il.

Pour l’avant dernière ligne on a :

Ariivée à 7h

Départ à 19h

On a donc :

De 7h à 9h avec un tarif de 20€ à l’heure : 2 x 20 = 40 €

De 9h à 18h avec un tarif de 15€ à l’heure : 9 x 15 = 135 €

De 18h à 19h avec un tarif de 20€ à l’heure : 1 x 20 = 20 €

Soit un total de : 40 +135 + 20 = 195€ et non pas 210 comme tu l’écris en cellule O13

Je me trompe ?

Bye !

@gmb

De 7h à 9h avec un tarif de 20€ à l’heure : 2 x 20 = 40 €

De 9h à 18h avec un tarif de 15€ à l’heure : 9 x 15 = 135 €

De 18h à 19h avec un tarif de 20€ à l’heure : 1 x 20 = 20 €

En fait à partir de la 9e heure travaillé dans la journée (donc après 8h de travail) on passe à 20€ par heure

Pour reprendre l'exemple ci-dessus

De 7h à 9h avec un tarif de 20€ à l’heure : 2 x 20 = 40 €

De 9h à 18h avec un tarif de 15€ à l’heure : (6 x 15) + (3 x 20) = 150€ - à partir de 15h on passe à 20€ de l'heure, car il a commencé à 7h du matin (8h de travail continu)

De 18h à 19h avec un tarif de 20€ à l’heure : 1 x 20 = 20 €

40 + 150 + 20 = 210€

Ok ! J'ai compris.

Merci de l'explication

Et comme j'ai compris que les formules classsiques avaient ta préférence et qu'on t'en a proposées, inutile que je rectifie la mienne.

Bye !

Bonjour à tous de nouveau !

Une proposition qui affine l'impact des heures supplémentaires :

=LET(
      h;(B2-A2)*24;
      hm;MAX((MIN(TEMPS(18;0;0);B2)-MAX(TEMPS(9;0;0);A2))*24;0);
      hs;SI(h>8;18-(A2*24+8);0);
      (h*20) - (hm*5) + (hs>0)*hs*5
)

@gmb, je te remercie pour ton temps et ta contribution

@jfl, tu me conseilles d'utiliser ta dernière proposition ou la corrigée suffit ?

Bonjour à tous de nouveau !

La dernière !

Merci @jfl, tu as bien comprendre ma problématique et tu m'as apporté une solution rapide et très pertinente. Chapeau !

Bonjour à tous de nouveau !

Bien !

Je vous remercie de ce retour.

Rechercher des sujets similaires à "calcul salaire journalier creneaux horaires differents"