@Peter_93
After the ForAll you will need an If - check if the current value is already the same as the current year. If so, have it just be false so the Patch is not performed for that row. Otherwise, do the Patch.
A rough example (not exact, change it to make sense):
If (CountRows (ColEvaluation)> 0;
ForAll (ColEvaluation; If(year = Year(Now()),false,Patch ('EVALUATION'; Defaults ('EVALUATION');
{Name: NAME; age: AGE; job: JOB; year: YEAR OF EVALUATION;
score: SCORE; salary: SALARY } ) ) ) ) ;;
The above example will probably not work as given, it is for rough illustration only, you can check it and change it to make sense for you.
If you must show an error message, you can replace false above ion the If(year = Year(Now()),false,... with something like Notify or some formula that shows error message if the user should be advised what row(s) was/were not saved.
Check if above helps.