Microsoft 365 Vérification de ma formule

Usine à gaz

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

laurent950

XLDnaute Accro
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:

TooFatBoy

XLDnaute Barbatruc
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:

Usine à gaz

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

  • comptage_test.xlsm
    23.1 KB · Affichages: 7

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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";""))))
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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";""))))
 

mapomme

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

  • Usine à gaz- comptage_test- v1.xlsm
    32.8 KB · Affichages: 1
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 027
Messages
2 084 762
Membres
102 655
dernier inscrit
STA82700