Nb jours vavances en fonction ancienneté et âge

0

Bonjour,
Je reviens vers le forum pour un nouveau coup de pouce (pas assez calé pour y arriver tout seul !)
En effet j’ai besoin d’automatiser le calcul du nombre de jours de Vacances (V) alloués à chaque employé en fonction de son ancienneté et de son âge (dans "tableau5" colonne "nombre jours de vacances" de la feuille "Entrées") et aussi de garder dans une cellule (T44 dans la feuille « Entrées ») le nombre de V de l’année (n-1) . (les années sont glissantes : en fonction de la date d’embauche)

La règle de base est :

A l’entrée = 20 jours de V qui passent à 25 jours dès la 3éme année (glissante)
L’année suivant le 50e anniversaire = + 5 jours => = 25 ou 30 jours selon le cas de figure (30 jours c’est le maxi)

1er exemple :
Si 50 ans à l’embauche alors : 20 jours la 1ère année
25 jours la 2e année (20 jours la 1ère année + 25 jours car > 50 ans)
30 jours la 3e année ( 20 jours de 1ère année + 5 jours de > 50 ans + 5 jours de 3e année)

2e exemple :
50 ans entre les 1/11/2018 et 31/10/2019,
année glissante 11/2018 à 10/2019 

alors + 5 jours à partir de l'année 11/2019 à 10/2020.
c'est à dire l'année (glissante) qui suit celle des 50 ans

La date qui sert de référence est celle figurant dans la cellule D2 de la feuille « Tableau »

J’espère avoir été suffisamment clair dans mes explications pour quelqu’un d’extérieur au système !

merci de bien vouloir prendre du temps pour me dépanner

https://www.cjoint.com/c/JCxtz0TGb6S


Concernant le calcul du nombre de jours de Vacances (V) alloués à chaque employé en fonction de son ancienneté et de son âge (dans "tableau5" colonne "nombre jours de vacances" de la feuille "Entrées"), je pense avoir trouvé une solution en rajoutant 4 colonnes dans "Tableau5" afin de séparer les calculs.
Calculs des "V" en fonction de l'ancienneté dans "colonne2", calcul des "V" en fonction de l'âge dans "colonne3" et la synthèse à l'aide de "SI et "ET" dans "colonne4".
Cela semble fonctionner.

Mais il me reste à afficher dans une cellule (X44 dans la feuille « Entrées ») le nombre de V de l’année (n-1), ce que je n'ai pas encore réussit à faire (mon cerveau fait une surchauffe !)
Ceci pour ne pas me retrouver avec un nombre de "V" à (n-1) erroné l'année ou ce nombre change.

Une bonne âme aurait-elle une solution ou une piste à m'offrir ?

D'avance merci.

https://www.cjoint.com/c/JCya52Xyc7S

    JoBar Posté le 23 mars 2020, 20:27
    par JoBar
    Répondre
    0

    Bonjour,

    Ton classeur ne s'ouvre qu'en lecture seule sur Mac alors... on va décomposer ton besoin et écrire la formule

    Pour résoudre ton problème, je vais utiliser la fonction MOIS.DECALER

    Je vais calculer la date d'embauche + 36 mois et voir si cette date est inférieure ou supérieure à aujourd'hui.

    Je vais calculer la date de naissance + 50*12 mois et tester si cette date est également inférieure ou supérieure à aujourd'hui. Si c'est le mois suivant les 50 ans, ce sera peut-être 50*12+1 je n'ai pas testé mais c'est un ajustement facile à faire et quand je vois ton tableau, je me dis que ça ne te posera aucun problème...

    Ma formule de principe est celle-là

    =25 + Si(Date_embauche+36mois < aujourdhui ; 5 ; 0) + si(Date_naissance+600mois < aujourdhui ; 5 ; 0)

    Date d'embauche + 36 mois = MOIS.DECALER(N3;36)

    Date d'embauche + 600 mois = MOISDECALER(Q3;50*12)

    La formule complète

    =25+SI(MOIS.DECALER(N3;36)<AUJOURDHUI();5;0)+SI(MOIS.DECALER(Q3;50*12)<AUJOURDHUI();5;0)

    Si au lieu de faire référence à aujourd'hui, on veut faire référence à une date quelconque, il suffit de la désigner son adresse dans la formule.

    Je regarde ton tableau sur le deuxième lien, il me semble que ta formule ne fonctionne pas.

    La première ligne, Adeline, a été embauchée en 2007, ça fait plus de trois ans, elle ne devrait pas avoir 25 jours de congés

    Pour la deuxième partie de la question, je ne comprends pas trop ce que tu cherches.Le nombre de jours où il y a V dans la colonne symbole et 2019 dans la colonne Année ?

    Si c'est le cas, 

    =SI.SOMME.ENS(Tableau1[Nombre de jours];Tableau1[Symboles];"V";Tableau1[Année];ANNEE(AUJOURDHUI())-1)

    Bon courage


    MicXL Posté le 26 mars 2020, 08:17
    par MicXL
    0

    Bonjour MicXL,

    Désolé pour la réponse tardive mais boulot-boulot en ce moment !

    Concernant l'exemple de Adeline, elle a droit à 20 jours de "V" à l'embauche + 5 jours après 2 ans mais pas + 5 jours car moins de 50 ans = 25 jours

    =25+SI(MOIS.DECALER(N3;36)<AUJOURDHUI();5;0)+SI(MOIS.DECALER(Q3;50*12)<AUJOURDHUI();5;0)
    il faut donc corriger ta formule en remplaçant 25 par 20 et "aujourd'hui()" par la date qui sert de référence qui en en "D2" de la feuille "Tableau" ainsi que le mois de la date d'embauche dans le colonne 2 de Tableau5 de la feuille "Entrées". tout ceci devant tenir compte du nom inscrit dans la cellule "V2" de la feuille "Tableau".

    =SI.SOMME.ENS(Tableau1[Nombre de jours];Tableau1[Symboles];"V";Tableau1[Année];ANNEE(AUJOURDHUI())-1)

    =SI.SOMME.ENS(Tableau1[Nb de jours];Tableau1[Symbole];"V";Tableau1[Année];ANNEE(AUJOURDHUI())-1)

    ne fonctionne pas chez moi : résultat = #NOM?

    De plus après plusieurs essais je viens seulement de me rendre compte que mes formules servant aux calculs pour les "V" dans 'n) ne tiennent pas compte du mois, mais seulement de l'année => donc copie à revoir aussi !

    J'ai essayé avec ça pour les années en plus si > 50 ans : 

    =SI(DATE(Tableau!$D$2-1;MOIS(RECHERCHEV(Tableau!$V$2;Tableau5;2;0))>[@[Année de naissance]];5;0))

    mais ça me met : 

    Vous avez entré un nombre trop important d'arguments  pour cette fonction
    et après 2 journées de 13h de boulot d'affilé je ne suis plus du tout en mesure de réfléchir à mes erreurs

    je joins le fichier modifié en espérant que celui-là s'ouvrira normalement !

    https://www.cjoint.com/c/JCDbKQYgLNS
    JoBar Posté le 29 mars 2020, 03:37
    par JoBar

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :