Signaler

Calcul de jours sur période [Résolu]

Posez votre question Minimix - Dernière réponse le 10 oct. 2016 à 16:03
Bonjour,

Je dois calculer pour plusieurs années (par exemple 2014) le nombre de jours de présence. J'ai écrit cette formule :
=SI(L2>$AN$2;"0";SI(ET(OU(N2="";N2>$AN$2);L2<$AN$1);NB.JOURS.OUVRES($AN$1;$AN$2);SI(L2<$AN$1;NB.JOURS.OUVRES($AN$1;N2);SI(ET(N2="";L2<$AN$2);NB.JOURS.OUVRES(L2;$AN$2);NB.JOURS.OUVRES(L2;N2)))))

L2 : date de début du contrat
N2 : date de fin du contrat
$AN$1 : 01/01/2014
$AN$2 : 31/12/2014

Mon problème est que pour une personne rentrée le 12/07/2002 et sortie le 01/04/2013 j'obtiens un résultat négatif. Je voudrais plutôt avoir un 0 ou rien... Je n'arrive pas a voir où est mon erreur

Merci d'avance de votre aide,
Afficher la suite 
Utile
+0
moins plus
Bonjour

La date de sortie est le 01/04/2013 donc 198 jour avant le 01/01/2014
Minimix- 7 oct. 2016 à 11:18
Oui. Mais que dois je modifier ou ajouter dans mon formule existante pour qu'il ne prenne pas les négatifs ?
J'ai essayé si date de fin est avant le 01/01/14 alors ne rien mettre, mais ça me donne de nombreuses erreurs sur les autres cas
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Bonjour

Essayer ceci pour 2014

=SI($N2<$AN$1;0;SI(ET($L2>=$AN$1;$N2<=$AN$2);NB.JOURS.OUVRES($L2;$N2);SI(ET(L2<AN1;N2<AN2);NB.JOURS.OUVRES(AN1;N2);SI(ET($N2>$AN$1;$N2<=$AN$2);NB.JOURS.OUVRES($N2;$AN$2);SI(ET($L2<$AN$1;$N2>=$AN$2);NB.JOURS.OUVRES($AN$1;$AN$2))))))
Minimix- 7 oct. 2016 à 12:13
Si je n'ai pas de date de fin cela me met 0 jours
Répondre
PHILOU10120 4048Messages postés lundi 16 avril 2012Date d'inscription 8 décembre 2016 Dernière intervention - 7 oct. 2016 à 12:37
je m'en suis aperçu voilà la correction

=SI(OU(L2=0;N2=0);0;SI(ET($N2<$AN$1;N2<>0);NB.JOURS.OUVRES($AN1;MAINTENANT());SI(ET($L2>=$AN$1;N2<>0;$N2<=$AN$2);NB.JOURS.OUVRES($L2;$N2);SI(ET(L2<AN1;N2<AN2);NB.JOURS.OUVRES(AN1;N2);SI(ET($N2>$AN$1;$N2<=$AN$2;N2<>0);NB.JOURS.OUVRES($N2;$AN$2);SI(ET($L2<$AN$1;$N2>=$AN$2);NB.JOURS.OUVRES($AN$1;$AN$2)))))))
Répondre
Minimix- 7 oct. 2016 à 13:39
Idem, les personnes sans dates de sortie sont a 0. Mais en plus ça me donne pour une personne sortie en 2013 463 jours
Répondre
PHILOU10120 4048Messages postés lundi 16 avril 2012Date d'inscription 8 décembre 2016 Dernière intervention - 7 oct. 2016 à 15:02
J'espère que je n'ai rien oublié

=SI(OU(L2=0;N2=0);0;SI(ET($N2<$AN$1);0;SI(ET($L2>=$AN$1;$N2<=$AN$2);NB.JOURS.OUVRES($L2;$N2);SI(ET(L2<AN1;N2<AN2);NB.JOURS.OUVRES(AN1;N2);SI(ET($N2>$AN$1;$N2<=$AN$2);NB.JOURS.OUVRES($N2;$AN$2);SI(ET($L2<$AN$1;$N2>=$AN$2);NB.JOURS.OUVRES($AN$1;$AN$2)))))))
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,

autre façon de faire.
Avec juste l'année (2013) en AN2 :
=MAX(0;NB.JOURS.OUVRES(MAX(DATE(AN2;1;1);L2);MIN(DATE(AN2;12;31);N2))) 

eric
Ajouter un commentaire
Utile
+0
moins plus
Bonjour Minimix

Un fichier exemple avec l'utilisation de la formule d'Eriiic
Pour les date de fin s'il n'y en a pas mettre =MAINTENANT() ( voir N5 dans le fichier )que vous remplacerez par la date du jour de départ

http://www.cjoint.com/c/FJiis4im4Px
Minimix- 10 oct. 2016 à 16:03
Merci à tous les 2.

Pour les 2 formules le même problème, ceux sans date de sortie sont égaux à 0.
Du coup j'ai créé 3 colonnes intermédiaires pour que s'il n'y ait pas de date de fin cela mette le 31/12/NN.

Le formule donne donc : =SI($L2="";"";MAX(0;NB.JOURS.OUVRES(MAX(DATE($Z$1;1;1);$L2);MIN(DATE($Z$1;12;31);$P2))))

En Z1 : Année
Et P2 : =SI(N2="";$AQ$2;N2) - AQ étant le 31/12/14.
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !