Change the load of Facts1 into something like:
SalesPersonID & '|' & YearStart(Date) AS TargetDate
and the last load of TargetsByYear into something like:
// SalespersonID, // Normalized. Which table has more SalesPersonIDs?
SalesPersonID & '|' & YearStart(Date) AS TargetDate,
Does this do the job?
[Edit] Modified the code so that you can get Year Targets by SalesPerson. TargetDate has become a real key that includes the year and the SalesPerson. Just a guess of what you are up to.