Formule à compléter "Jour trentième" ou "Jour consécutif"

Résolu/Fermé
thibaut_francois Messages postés 96 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 14 avril 2021 - 16 nov. 2012 à 10:54
 thibaut_francoi - 17 janv. 2013 à 11:46
Bonjour à tous,

En avril, vous m'aviez aidé sur une formule pour calculer la durée d'un séjour dans un mois pré-déterminé.

J'aurais besoin d'un complément dans cette formule, à savoir :

- si la colonne C = T, alors la durée de séjour doit être calculée en jours trentième (jours360;A1;B1+1;VRAI)...

- si la colonne C = C, alors la durée de séjour doit être calculée en jours consécutifs (ce que fait déjà très bien la formule).

Ca semble simple, mais comme je n'arrive pas à maîtriser la formule que vous m'aviez postée, je ne parviens pas à le faire moi-même ^^

Merci de votre aide à tous.

https://www.cjoint.com/?0KqkVAkjZHp
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
18 nov. 2012 à 19:04
Bonjour Thibaut,

C'est clair que je ne maîtrise pas du tout TA formule

Je vais essayer de te l'expliquer car il n'y a pas de raison pour que tu ne comprennes pas.

=SI(OU(E$1=FIN.MOIS($A2;-1)+1;FIN.MOIS(E$1;0)=FIN.MOIS($B2;0);ET($B2="";$A2<=FIN.MOIS(E$1;0));ET(E$1>=$A2;E$1<=$B2));SI(OU(FIN.MOIS(E$1;0)=FIN.MOIS($B2;0);$A2=$B2);1;0)+SI($C2="T";MIN($B2;E$1+SI(JOUR($B2)=31;29;30));MIN($B2;FIN.MOIS(E$1;0)+1))-MAX($A2;E$1);0)

Voici le détail des différentes fonctions de la formule :
=SI(OU( il faut tester toutes les conditions pour avoir un résultat :
Y a-t-il présence dans le mois en cours ligne 1 ?
condition 1 : la période commence au cours du mois
$E$1=FIN.MOIS($A2;-1)+1; la date ligne 1 égale le début du mois de la date début(A)
condition 2 : la période se termine au cours du mois
FIN.MOIS($E$1;0)=FIN.MOIS($B2;0); la fin du mois de la date ligne 1 égale la fin du mois de départ (B)
condition 3 : séjour en cours avec arrivée antérieure à la fin de mois
ET($B2=""; pas de date départ
$A2<=FIN.MOIS($E$1;0)); et la date début est inférieure ou égale à la fin de mois de la date ligne 1
condition 4 : présence en cours ce mois
ET($E$1>=$A2; la date ligne 1 est supérieure ou égale à la date début(A)
$E$1<=$B2)); et la date ligne 1 est inférieure ou égale à la date départ(B)

Si l'une des 4 conditions précédentes est remplie alors l'on teste s'il faut rajouter un jour

SI( 2 cas :
OU(
FIN.MOIS($E$1;0)=FIN.MOIS($B2;0);
la fin du mois de la date ligne 1 égale la fin du mois de départ (B)
$A2=$B2); ou départ le jour du début

1;0) si l'une des conditions précédentes sont vraies l'on ajoute 1 sinon 0

puis l'on fait le calcul du nombre de jours que l'on va ajouter.

Il faut tester les jours trentièmes :
+SI($C2="T";
si condition remplie
MIN($B2;E$1+SI(JOUR($B2)=31;29;30)); on ajoute la date la plus petite entre date départ et début du mois de la date ligne 1 plus 29 jours si départ au 31 sinon 30 pour avoir un mois complet à 30 jours,
sinon ("C" est implicite)
MIN($B2;FIN.MOIS(E$1;0)+1)) on ajoute la date la plus petite entre date départ et début du mois suivant de la date ligne 1
puis quel que soit le cas précédent,
-MAX($A2;$E$1);0) on soustrait la date la plus grande entre date début et date ligne 1

La formule est mise en E2 puis "tirée" (avec la petite croix en bas à droite) sur les colonnes concernées et ensuite sur toutes les lignes

Voici le résultat : https://www.cjoint.com/?BKssQ1tZWXn

Bon test.
1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
18 nov. 2012 à 21:31
PS: précision sur la fin de formule
-MAX($A2;$E$1);0)
Le zéro souligné est la valeur affichée si aucune des 4 conditions n'est valide.
0
thibaut_francois Messages postés 96 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 14 avril 2021 1
19 nov. 2012 à 20:41
Merciiiiii beaucoup Gbinforme!! Je potasse ça pour me familiariser avec la formule ^^
Faut que j'arrive à la maîtriser !

Tu déchires!
0
thibaut_francoi
17 janv. 2013 à 11:46
Bonjour Gbinforme...

J'ai posté une petite demande d'ajustement ^^

Si tu pouvais, une nouvelle fois, m'aider.

http://www.commentcamarche.net/forum/affich-26926104-ajustement-d-une-formule

Merci à toi
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
16 nov. 2012 à 18:49
bonjour thibaut_francois,

Effectivement, je comprends que tu n'arrive pas à maîtriser la formule

si la colonne C = T, alors la durée de séjour doit être calculée en jours trentième

Cela signifie que les mois complets font 30 jours ?
0
thibaut_francois Messages postés 96 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 14 avril 2021 1
16 nov. 2012 à 21:46
Oui exactement....

C'est clair que je ne maîtrise pas du tout TA formule gbinforme ^^ C'est trop complexe pour moi là ^^
0