XL 2021 Calcul contenant des dates

Sanni

XLDnaute Junior
Bonjour à tous, j'espère que tout le monde va bien !
J'ai des difficultés à trouver un résultat juste dans lors de l'utilisation de la fonction SI avec des dates. J'aimerais savoir comment faire pour résoudre cela.
Voici ce que je voudrais comme résultat dans la colonne L :
- SI M2 < A3; que "0" soit renvoyé, dans le cas contraire,
- SI M2 = A3; que "J3" soit renvoyé, dans le cas contraire,
- SI M2 > E3; que "0" soit renvoyé, dans le cas contraire,
- SI M2 = E3; que "K3" soit renvoyé, dans le cas contraire,
- que "I3" soit renvoyé.

NB: je voudrais considérer seulement la date de format "mm-yyyy" dans ma formule, c'est pour cette raison que j'ai utilisé la fonction "TEXTE()" afin d'extraire le mois et l'année seule.
Merci pour votre aide.
 

Pièces jointes

  • EXCEL2021.xlsx
    13.2 KB · Affichages: 7

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Sanni :),

La plupart du temps quand on veut comparer des dates sans tenir compte du jour on compare d'abord les années ensuite si les années sont identiques alors on passe à la comparaison des mois.
Cela revient à comparer les dates sous la forme aaaamm et non pas mmaaaa.

exemple : on compare date1=01/05/2019 et date2=25/02/2099.
  • Si on prend "mmaaaa" alors on compare 052019 à 022099 et Excel trouve que "052019" est supérieur à "022099" car la comparaison texte de gauche à droite trouve que 05 > 02

  • Si on prend "aaaamm" alors on compare 201905 à 209902 et Excel trouve que "201905" est bien inférieur à "209902" car la comparaison texte de gauche à droite trouve que 201 < 209
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Bon! Je me lance aussi dans la mêlée.
Pour faire varier les plaisirs, je compare les (FIN.MOIS($M$2;0)-1) .

=SI(OU((FIN.MOIS($M$2;0)-1)<(FIN.MOIS(A3;0)-1);((FIN.MOIS($M$2;0)-1)>(FIN.MOIS(E3;0)-1)));0;SI((FIN.MOIS($M$2;0)-1)=(FIN.MOIS(A3;0)-1);J3;SI((FIN.MOIS($M$2;0)-1)=(FIN.MOIS(E3;0)-1);K3;I3)))

Edit et Errata : je me confonds en moult regrets et vous prie tous de bien vouloir m'excuser.
En voulant fanfaronner, je me suis lamentablement planté.
Il faut comparer les débuts de mois car le jour sera toujours le même (le 01). C'est ce que je voulais faire mais mon expression c'est du grand n'importe quoi! J'ai dû avoir un moment d'absence ! C'est en fait :
FIN.MOIS($M$2; -1 )+1 qui calcule la fin du mois précédent et ensuite ajoute un jour. On trouve donc bien le premier du mois en cours.
La formule corrigée est donc :
VB:
=SI(OU((FIN.MOIS($M$2;-1)+1)<(FIN.MOIS(A3;-1)+1);((FIN.MOIS($M$2;-1)+1)>(FIN.MOIS(E3;-1)+1)));0;SI((FIN.MOIS($M$2;-1)+1)=(FIN.MOIS(A3;-1)+1);J3;SI((FIN.MOIS($M$2;-1)+1)=(FIN.MOIS(E3;-1)+1);K3;I3)))

J'ai joint la version v2 du fichier (version corrigé)
 

Pièces jointes

  • Sanni- Compar Annee-mois- v2.xlsx
    13.1 KB · Affichages: 0
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re bonjour à tous,
Il me semble que si on suit le raisonnement du demandeur à la lettre et ligne par ligne, on a une réponse à la question, non ?
Or, si on regarde la demande initiale du demandeur au post#1
Voici ce que je voudrais comme résultat dans la colonne L :
- SI M2 < A3; que "0" soit renvoyé, dans le cas contraire,
- SI M2 = A3; que "J3" soit renvoyé, dans le cas contraire,
- SI M2 > E3; que "0" soit renvoyé, dans le cas contraire,
- SI M2 = E3; que "K3" soit renvoyé, dans le cas contraire,
- que "I3" soit renvoyé.
donc ici en premier <, puis =, puis >, puis =

alors que dans son fichier, la formule employée est la suivante
1717748600997.png

Donc ici en premier =, puis <, puis =, puis >.
Je rejoint donc @dysorthographie tout de même. Je pense que cela peut avoir son importance
@+ Lolote83
 

Sanni

XLDnaute Junior
Bonjour @Sanni :),

La plupart du temps quand on veut comparer des dates sans tenir compte du jour on compare d'abord les années ensuite si les années sont identiques alors on passe à la comparaison des mois.
Cela revient à comparer les dates sous la forme aaaamm et non pas mmaaaa.

exemple : on compare date1=01/05/2019 et date2=25/02/2099.
  • Si on prend "mmaaaa" alors on compare 052019 à 022099 et Excel trouve que "052019" est supérieur à "022099" car la comparaison texte de gauche à droite trouve que 05 > 02

  • Si on prend "aaaamm" alors on compare 201905 à 209902 et Excel trouve que "201905" est bien inférieur à "209902" car la comparaison texte de gauche à droite trouve que 201 < 209
Bonjour, d'accord c'est très bien compris. Merci à vous!
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @Lolote83 ,@dysorthographie,

En fait j'ai un peu malgré tout un peu interprété à ma sauce (mais le l'ai tu :rolleyes:). Cependant certains l'ont bien vu, n'est-ce pas ? 😜

J'ai considéré que :
  • la condition aboutissant à 0 était en fait quand la date en M2 est en dehors de l'intervalle [Date colonne A , Date colonne E]
  • ensuite si la date M2 est égale à la borne inférieure de l'intervalle (donc date en colonne A), alors on retourne J3
  • ensuite si la date M2 est égale à la borne supérieure de l'intervalle (donc date en colonne E), alors on retourne K3
  • sinon on retourne I2
Edit : si on remplace l'énoncé de la condition 4 par "Si M2 est inclus dans l'intervalle [An , En] sans être égale à une des deux bornes, alors on retourne In

Avec cet énoncé, on peut supprimer les "ensuite" et "sinon" car les conditions énoncées s’excluent deux à deux. Exprimées comme cela, on a donc bien 4 conditions qui déterminent une partition de l'échelle du temps.
 
Dernière édition:

Sanni

XLDnaute Junior
Re @Lolote83 ,@dysorthographie,

En fait j'ai un peu malgré toutun peu interprété à ma sauce (mais le l'ai tu :rolleyes:). Cependant certains l'ont bien vu, n'est-ce pas ? 😜
J'ai considéré que :
  • la condition aboutissant à 0 était en fait quand la date en M2 est en dehors de l'intervalle [date colonne A , Date colonne E]
  • ensuite si la date M2 est égale à laborne inférieure de l'intervalle (donc date en colonne A), alors on retourne J3
  • ensuite si la date M2 est égale à la borne supérieure de l'intervalle (donc date en colonne E), alors on retourne K3
  • sinon on retourne I2

Bonjour mapomme

C'est tout à fait cela. Vous avez bien compris. Votre formule marche à merveille. Merci beaucoup à tous pour vos diverses interventions.
 
Dernière édition:

gbinforme

XLDnaute Impliqué
Bonjour à tous
Lorsque l'on ne connait pas le contexte ce n'est pas simple
alors je ne sais pas si ma formule répond à la demande mais j'espère tout de même . :)
VB:
=SI(ET(A3<$M$2;E3>MOIS.DECALER($M$2;1));0;SI(ET(A3>=$M$2;A3<MOIS.DECALER($M$2;1));J3;SI(ET(E3>=$M$2;E3<MOIS.DECALER($M$2;1));K3;I3)))
 

Pièces jointes

  • EXCEL2021.xlsx
    12.6 KB · Affichages: 2

Discussions similaires

Réponses
15
Affichages
1 K
Réponses
4
Affichages
300

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505