Bonjour,
Alors, la toute première chose à faire est bien de stériliser le chat. Il est grandement en âge. Il est en pleine puberté, donc travaillé par les hormones, et votre copain étant lui aussi un mâle, le chat en ressent un danger/rivalité.
Ensuite, Il faudrait que votre copain ne se mêle plus du tout de ce que fait le chat. Ne le gronde jamais et ne l'approche jamais, même pour faire des câlins. Un chat est un animal foncièrement territorial, et pour votre chat l'arrivée de votre copain est un intrus sur SON TERRITOIRE et qui plus est un intrus qui élève la voix contre lui. C'est profondément perturbant pour le chat.
Vous ne changerez pas le chat, même si l'opération peut apporter un mieux. Mais vous pouvez raisonner votre copain et lui faire comprendre que votre chat est chez lui, qu'il ne sera jamais un chien, et que crier sur un chat est totalement contre-productif. C'est un cercle vicieux : le chat a peur donc il devient malpropre, l'humain lui crie dessus, le chat a encore plus peur et continue d'être malpropre. C'est sans fin...
Un chat n'est jamais malpropre pour se venger, mais bien parce qu'il est perturbé émotionnellement.