XL 2016 Fonction SI et DATEDIF combinée

FAT LARDIGO

XLDnaute Nouveau
Bonjour,
Ayant épuisé mon stock de patience et de cellules grises, j'en appelle à vos connaissances en espérant solutionner mon casse-tête.

Alors, alors...

Je souhaiterai calculer le nombre de jours entre deux dates (date d'entrée et date de sortie/ou/date du jour) avec plusieurs variables (sinon ce serait pas drôle!):
-Si les personnes sont entrées avant le 01/01/2022, il faut prendre en compte la date du 01/01/2022, si après ou le même jour que le 01/01/2022 il faut prendre la date inscrite dans la cellule.
-Si les personnes sont sorties, il faut prendre la date à laquelle elles sont sorties, si pas de date de sortie inscrite, il faut prendre la date du jour.

N'ayant pas peur du ridicule, j'ose vous montrer ma formule (M=date d'entrée / Y=date de sortie) :

=DATEDIF(SI(M2<"01/01/2022";"01/01/2022";M2);SI(Y2="";AUJOURDHUI();Y2);"d")

Enfin, dans un second temps, je souhaitais totaliser le nombre de journées réalisées (nombre de journées où les personnes ont été présentes dans l'année 2022) dans une cellule :

=SOMME(DATEDIF(SI(Hébergement!M2:M1000<="01/01/2022";"01/01/2022";Hébergement!M2:M1000);SI(Hébergement!Y2:Y1000="";AUJOURDHUI();Hébergement!Y:Y);"d"))

En vous remerciant par avance bien chaleureusement pour votre aide !

:)
 
Solution
Bonjour,
Ta formule est à modifier comme ceci :
Code:
=DATEDIF(SI(M2<DATE(2022;1;1);DATE(2022;1;1);M2);SI(Y2="";AUJOURDHUI();Y2);"d")
mais on peut faire plus court avec :
Code:
=SI(Y2="";AUJOURDHUI();Y2)-MAX(DATE(2022;1;1);M2)
Cordialement

ALS35

XLDnaute Occasionnel
Bonjour,
Ta formule est à modifier comme ceci :
Code:
=DATEDIF(SI(M2<DATE(2022;1;1);DATE(2022;1;1);M2);SI(Y2="";AUJOURDHUI();Y2);"d")
mais on peut faire plus court avec :
Code:
=SI(Y2="";AUJOURDHUI();Y2)-MAX(DATE(2022;1;1);M2)
Cordialement
 

ALS35

XLDnaute Occasionnel
Re,
A priori non car dans ce cas les dates sont considérées comme du texte. C'était le problème dans ta formule.
Modifie en conséquence ta deuxième formule.
À la place de DATE(2022;1;1) , tu peux aussi utiliser DATEVAL("01/01/2022")
Cordialement
 

Discussions similaires

Réponses
13
Affichages
520

Statistiques des forums

Discussions
312 107
Messages
2 085 354
Membres
102 873
dernier inscrit
yayo