Microsoft 365 Vérification de ma formule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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

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)
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)
 
Dernière édition:
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";""))))
Est-ce qu'on n'avait pas déjà traité ce problème il y a quelques jours et immédiatement déduit qu'il fallait logiquement utiliser un slash plutôt qu'un point comme séparateur au niveau de la date ?
À moins que ce soit encore ma mémoire qui me joue des tours. 🤔
 
Dernière édition:
Bonjour à toutes et à tous,
je vous souhaite un beau dimanche 🙂

Je reviens sur ce fil car l'année à changé et ma formule ne fonctionne plus Grrrrrr !!!
En #post5, laurent950 m'avait donné la bonne formule :
=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";""))))

Mais depuis le 1er janvier 2022 ... ça ne marche plus .. Nada ... queue d'ail.

Je n'arrive pas à la modifier.
Je joins le fichier et je continue mes tests.
Pourriez-vous me donner la bonne formule ?
Je vous remercie 🙂
lionel 🙂
 

Pièces jointes

Bonjour Lionel, le fil, le forum

Si tu fais une comparaison sur un nombre de mois inférieur au mois d'aujourd'hui, il te faut prendre en compte le changement d'année et ajouter 12 pour ta comparaison quand l'année d'aujourd'hui est supérieure à l'année de J4.

VB:
=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(ANNEE(DATEVAL(GAUCHE(J4;8)))<ANNEE(AUJOURDHUI());SI(MOIS(FIN.MOIS(CNUM(SUBSTITUE(DATEVAL(GAUCHE(J4;8));"-";".";1));0))<12+MOIS(AUJOURDHUI());"3";"");SI(MOIS(FIN.MOIS(CNUM(SUBSTITUE(DATEVAL(GAUCHE(J4;8));"-";".";1));0))<MOIS(AUJOURDHUI());"3";"")))))
Sans titre.png
 
re,
un peu plus simple comme cela
VB:
=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))<((ANNEE(AUJOURDHUI())-ANNEE(DATEVAL(GAUCHE(J4;8))))*12)+MOIS(AUJOURDHUI());"3";""))))
 
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";""))))
 
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
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
565
Réponses
3
Affichages
758
Réponses
1
Affichages
1 K
Retour