Microsoft 365 Vérification de ma formule

Usine à gaz

XLDnaute Barbatruc
Bonsoir à toutes et à tous,

J'ai encore du faire une formule "biscornue" :mad:

Je n'arrive à comprendre pourquoi elle fonctionne chez moi et pas chez ma collègue Grrrr !!!

Nous sommes tous les deux avec le même windows 10 64 et le même excel office365 en 64.

Pourriez-vous me dire si ma formule est bonne ?
en colonne P :
VB:
=SI(OU(J8="";K8="");"";SI(CNUM(SUBSTITUE(GAUCHE(J8;8);"-";".";1))=AUJOURDHUI();1;SI(MOIS(FIN.MOIS(CNUM(SUBSTITUE(GAUCHE(J8;8);"-";".";1));0))=MOIS(AUJOURDHUI());2;SI(MOIS(FIN.MOIS(CNUM(SUBSTITUE(GAUCHE(J8;8);"-";".";1));0))<MOIS(AUJOURDHUI());"3";""))))

Je joins le fichier test pour comprendre le contexte.
Je vous remercie,
Amicalement,
lionel,
 

Pièces jointes

  • comptage_test.xlsm
    23.6 KB · Affichages: 6
Solution
Bonsoir @Usine à gaz

=SI(OU(J4="";K4="");"";SI(CNUM(SUBSTITUE(DATEVAL(GAUCHE(J4;8));"-";".";1))=AUJOURDHUI();1;SI(MOIS(FIN.MOIS(CNUM(SUBSTITUE(DATEVAL(GAUCHE(J4;8));"-";".";1));0))=MOIS(AUJOURDHUI());2;SI(MOIS(FIN.MOIS(CNUM(SUBSTITUE(DATEVAL(GAUCHE(J4;8));"-";".";1));0))<MOIS(AUJOURDHUI());"3";""))))

AUJOURDHUI c'est un numéro de série, et donc comparer avec un numéro de série DATEVAL(Ici la date)

Usine à gaz

XLDnaute Barbatruc
re,

D'ailleurs en relisant les posts précédents de cette discussion, je pense qu'en utilisant dateval, tes cnum et substitue sont devenus inutiles, dateval renvoyant le numéro de série de la date, on peut donc encore simplifier.
VB:
=SI(OU(J4="";K4="");"";SI(DATEVAL(GAUCHE(J4;8))=AUJOURDHUI();1;SI(MOIS(FIN.MOIS(DATEVAL(GAUCHE(J4;8));0))=MOIS(AUJOURDHUI());2;SI(MOIS(FIN.MOIS(DATEVAL(GAUCHE(J4;8));0))<((ANNEE(AUJOURDHUI())-ANNEE(DATEVAL(GAUCHE(J4;8))))*12)+MOIS(AUJOURDHUI());"3";""))))
Merci Yeahou : ça marche aussi :)
 

Usine à gaz

XLDnaute Barbatruc
Re,

Ma première tentative avec LET(...)

Avec la formule du post #10

Si on nomme l'expression: CNUM(SUBSTITUE(DATEVAL(GAUCHE(J4;8));"-";".";1)) avec le nom laDate,
et si on nomme AUJOURDHUI() avec le nom Auj

alors la formule s'écrit :
VB:
SI(laDate=Auj;1;SI(MOIS(laDate)=MOIS(Auj);2;SI(ANNEE(laDate)<ANNEE(Auj);SI(MOIS(FIN.MOIS(laDate;0))<12+MOIS(Auj);"3";"");SI(MOIS(laDate)<MOIS(Auj);"3";"")))))

Avec office 365, on peut utiliser le LET(...) et la formule devient :
VB:
=LET(Auj;AUJOURDHUI();laDate;CNUM(SUBSTITUE(DATEVAL(GAUCHE(J5;8));"-";".";1));SI(OU(J5="";K5="");"";SI(laDate=Auj;1;SI(MOIS(laDate)=MOIS(Auj);2;SI(ANNEE(laDate)<ANNEE(Auj);SI(MOIS(FIN.MOIS(laDate;0))<12+MOIS(Auj);"3";"");SI(MOIS(laDate)<MOIS(Auj);"3";""))))))

Voir colonne Q
Merci mapomme : ça marche aussi :)
 

Discussions similaires

Statistiques des forums

Discussions
315 103
Messages
2 116 235
Membres
112 695
dernier inscrit
ben44115