Datedif avec plusieurs conditions Excel 2010

Résolu/Fermé
clocliquot Messages postés 6 Date d'inscription vendredi 16 mai 2014 Statut Membre Dernière intervention 3 juin 2014 - 16 mai 2014 à 10:44
clocliquot Messages postés 6 Date d'inscription vendredi 16 mai 2014 Statut Membre Dernière intervention 3 juin 2014 - 16 mai 2014 à 15:56
Bonjour,

J'ai un fichier excel comprenant les dates d'entrées et de sorties de plusieurs employés.

colonne A/ date d'entrée colonne B / date de sortie
01/09/2014 28/02/2015
16/05/2013 30/09/2014
21/01/2014 30/09/2014
12/10/2009 15/06/2014
09/07/2012 31/08/2014
04/01/2010 20/10/2014
01/01/2015 31/08/2018

Premièrement, vous constaterez que certaines dates ne sont pas encore rellement arrivées dans cette liste, ce qui est normal, car il s'agit d'effectifs projetés (en prévision).

Voici mon souhait : pour chaque employé, je souhaiterais obtenir :
en colonne C : le nombre de mois effectué par l'employé mais uniquement entre le 01/09/2014 et le 31/12/2014
en colonne D : le nombre de mois effectué par l'employé mais uniquement entre le 01/01/2015 et 31/08/2015

Je connais l'utilisation de DATEDIF, cependant.... là il me faudrait une formule me permettant d'inclure des conditions afin de ne prendre en compte que les mois de ces 2 laps de temps bien précis.

Ainsi, en colonne C, le nombre de mois ne pourra jamais dépassé le nombre de 4 et en colonne D le nombre de mois ne pourra jamais dépassé 8.
Je ne sais pas si cela est possible...? et si quelqu'un connaitrait une solution sans passer par une macro...
je vous remercie par avance.
A voir également:

7 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
16 mai 2014 à 10:55
Bonjour,

pour la première ligne

=DATEDIF(A2;B2;"m")

mais la réponse n'est certainement pas complète, je pense que tu cherche quelque chose de plus complexe. Si la date en B est antérieure au 01/09/2014 il faut retenir 01/09/2014 puis compter le nombre de mois jusqu'au 31/12/2014 puis ajouter le nombre de mois du 01/01/2015 au 31/08/2015 même si cette dernière est postérieure
0
clocliquot Messages postés 6 Date d'inscription vendredi 16 mai 2014 Statut Membre Dernière intervention 3 juin 2014
16 mai 2014 à 11:13
Merci Mike pour ton retour.
Malheureusement j'ai déjà testé la formule =DATEDIF(A2;B2;"m") qui me donnera le nombre total de mois pendant lequel l'employé était présent dans l'entreprise. En l'occurence pour mon exemple cela me donne le chiffre 5.
pour info, je préfère d'ailleurs utilisé :
=DATEDIF(A2;B2;"d")/29 qui me donne quelque chose de plus logique à savoir 6.

Mais cela ne résout pas mon problème car je souhaite uniquement avoir en colonne C le nombre de mois effectué pendant la période allant du 01/09/2014 au 31/12/2014. (soit 4 mois maximum)

& en colonne D le nombre de mois effectués pdt la période allant du 01/01/2015 au 31/08/2015.
pour mon 1er employé la réponse sera donc 2 mois.

Alors certes, il me suffit ensuite de retirer 2 mois pour mon 1er employé. Mais aucun des employés n'a le même schéma de vie.
par exemple dès le second employé, je tombe sur 17 mois en colonne C ( ce n'est pas ce qui m'interesse).
Le but de la manoeuvre étant d'avoir une formule qui me permettrait d'automatiser les conditions du calcul du nombre de mois seulement pour les périodes qui m'interessent.


merci
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
16 mai 2014 à 11:30
Re,

oui c'est ce que j'avais compris, la formule est plus complexe parce qu'il faut tester chaque date exemple pour le premier test date en A2
=SI(A2<DATEVAL("01/09/2014");DATEVAL("01/09/2014");A2)
idem pour la date en C2
=SI(B2>DATEVAL("31/12/2014");DATEVAL("31/12/2014");B2)

ensuite il faut faire le test pour les dates de début d'année. Là je n'ai pas le temps mais si tu n'as pas de réponse, je reviens dans l'après midi
0
clocliquot Messages postés 6 Date d'inscription vendredi 16 mai 2014 Statut Membre Dernière intervention 3 juin 2014
16 mai 2014 à 12:12
ooohhhh !!
mon petit cerveau embrumé à mis du tps à connecter. Mais ça y ait j'ai compris !
on rajoute donc 4 colonnes supplémentaires de "tests" avec tes formules pour "bloquer" les dates sur les zones qui m'interessent et ensuite dans une autre colonne on refait la formule DATEDIF... entre ces nouvelles zones "tests".

Très très très malin.

MERCI INFINIMENT !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
16 mai 2014 à 14:30
Re,

C'est cela, pour des données en A2 et B2, tu peux en E2 par exemple copier cette formule qui définira le premier jour de référence pour ton premier calcul
=SI(ET(A2>=DATEVAL("01/09/2014");A2<=DATEVAL("31/12/2014"));A2;SI(A2<DATEVAL("01/09/2014");DATEVAL("01/09/2014");""))
en F2 pour le dernier jour de référence
=SI(ET(B2<=DATEVAL("31/12/2014");B2>DATEVAL("01/09/2014"));B2;SI(B2>=DATEVAL("31/12/2014");DATEVAL("31/12/2014");""))
ensuite pour compter les jours entre les deux dates de référence exemple en G2
=SI(ET(E2<>"";F2<>"");F2-E2;"")
ou pour compter les mois entier
=SI(ET(E2<>"";F2<>"");DATEDIF(E2;F2;"m");"")
ou si tu préfères le nombre de jours / 29
=SI(ET(E2<>"";F2<>"");(F2-E2)/29;"") mais si c'est pour un calcul moyen mensuel il conviendrai de diviser par 30,42

si tu souhaites éviter les deux colonnes E et F, rien ne t'empêche d'imbriquer les formule
ce qui donnera comme formule pour calcul de nombre de jours
=SI(ET(SI(ET(A2>=DATEVAL("01/09/2014");A2<=DATEVAL("31/12/2014"));A2;SI(A2<DATEVAL("01/09/2014");DATEVAL("01/09/2014");""))<>"";SI(ET(B2<=DATEVAL("31/12/2014");B2>DATEVAL("01/09/2014"));B2;SI(B2>=DATEVAL("31/12/2014");DATEVAL("31/12/2014");""))<>"");SI(ET(B2<=DATEVAL("31/12/2014");B2>DATEVAL("01/09/2014"));B2;SI(B2>=DATEVAL("31/12/2014");DATEVAL("31/12/2014");""))-SI(ET(A2>=DATEVAL("01/09/2014");A2<=DATEVAL("31/12/2014"));A2;SI(A2<DATEVAL("01/09/2014");DATEVAL("01/09/2014");""));"")

idem pour calculer le nombre de mois en entreprise exemple en L2 pour la première date de référence
=SI(ET(A2>=DATEVAL("01/01/2015");A2<=DATEVAL("31/08/2015"));A2;SI(A2<DATEVAL("01/01/2015");DATEVAL("01/01/2015");""))
pour la deuxième ex. en M2
=SI(ET(B2<=DATEVAL("31/08/2015");B2>DATEVAL("01/01/2015"));B2;SI(B2>=DATEVAL("31/08/2015");DATEVAL("31/08/2015");""))
et même formule pour calculer le nombre de jour entre les deux
=SI(ET(L2<>"";M2<>"");M2-L2;"")

Voilà à toi de jouer
0
tontong Messages postés 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
16 mai 2014 à 14:38
Bonjour,
Je n'ai peut-être pas tout compris mais j'avais vu les choses autrement.

On peut exprimer les conditions avec les fonctions Min et Max. Pour que Datedif considère le jour de fin comme inclus il faut ajouter 1 au deuxième argument.

Avec les dates de consigne C2=01/09/2014 et C3=31/12/2014
En C4:
=SI(ET(A4<>"";B4<>"";MIN(B4;$C$3)>MAX(A4;$C$2));DATEDIF(MAX(A4;$C$2);MIN(B4;$C$3)+1;"m");"")
Formules analogues en colonne D.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 16/05/2014 à 15:01
Salut Tontong,

Oui bien vu, j'avais exploité trop rapidement cette idée mais faute de temps je suis resté basique
Cordialement
0
clocliquot Messages postés 6 Date d'inscription vendredi 16 mai 2014 Statut Membre Dernière intervention 3 juin 2014
16 mai 2014 à 15:56
merci vraiment bcp Mike et Tontong pour ces 2 solutions qui fonctionnent parfaitement !
par contre, jamais je ne pourrai faire croire que j'ai trouvé ça toute seule tellement c fort mais bon.. lol
vraiment merci merci merci !
0