Usine à gaz XLDnaute Barbatruc 11 Novembre 2021 #1 Bonsoir à toutes et à tous, J'ai encore du faire une formule "biscornue" 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
Bonsoir à toutes et à tous, J'ai encore du faire une formule "biscornue" 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,
Solution laurent950 11 Novembre 2021 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)
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 2 Janvier 2022 #16 Yeahou à dit: 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";"")))) Cliquez pour agrandir... Merci Yeahou : ça marche aussi Vote positif 0 Vote négatif
Yeahou à dit: 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";"")))) Cliquez pour agrandir... Merci Yeahou : ça marche aussi
Usine à gaz XLDnaute Barbatruc 2 Janvier 2022 #17 mapomme à dit: 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 Cliquez pour agrandir... Merci mapomme : ça marche aussi Vote positif 0 Vote négatif
mapomme à dit: 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 Cliquez pour agrandir... Merci mapomme : ça marche aussi