bonjour
une UDF (pour "User-defined function") est une routine de programmation écrite dans le langage VBA et utilisable en tant que fonction au sein d'une formule. c'est une solution.
l'autre solution pourrait être de créer un nom via le menu insertion (puis nom, définir), et d'associer à ce nom un bout <=255 caractères de ta formule.
ainsi, tu crées un nom comme "alambic" qui contient la formule OU entière ci-dessous :
=OU(Feuil1!P23="F";ET(Feuil1!P$13=Feuil1!$B$12;Feuil1!$B23="X");ET(Feuil1!P$13=Feuil1!$C$12;Feuil1!$C23="X");ET(Feuil1!P$13=Feuil1!$D$12;Feuil1!$D23="X");ET(Feuil1!P$13=Feuil1!$E$12;Feuil1!$E23="X");ET(Feuil1!P$13=Feuil1!$F$12;Feuil1!$F23="X");ET(Feuil1!P$13=Feuil1!$G$12;Feuil1!$G23="X");(Feuil1!P$13="Di");ET(Feuil1!P$13=Feuil1!$B$12;OU(ET(Feuil1!$B23="I";MOD(Feuil1!P$18;2)>0);ET(Feuil1!$B23="P";MOD(Feuil1!P$18;2)=0))))
puis dans ta mise en forme conditionnelle (MEFC), tu utilises la formule
=SI(R20="TR";0;SI(alambic;1;0))
par contre, à vérifier si cela fonctionne correctement dans ton cas et selon ce que tu veux faire, j'ai vu notamment que tu utilisais des références relatives.