Selected Answer
I see that k1 already solved your problem while I still was chewing on it. However, since I got done I will publish my work here. First off, I didn't get your code to work. Full marks to k1 for that!
The approach I took was to create an ActiveX drop-down on the fly when one clicks on an eligible cell. A name can be selected and the associated contract number is written to the underlying cell before the combobox is hidden. Next click it will be deleted and a new one created when needed.
The disadvantage of this system is that the user can't cancel. Once the drop-down shows a name must be selected and a contract number will be written. The way to delete it is to select at least two cells in the same row and clear both of them together.
EDIT 07 Aug 2018 ==================================
It isn't a flaw in Excel, K1. Your data validation list specifies a partial range of the worksheet, not a range in the table. If it would specify the table column as source then it would expand with the table.
Perhaps it is a flaw that you can't use structured references, such as =Table2[Client Name] to specify a validation list but there is a work-around. You can use this type of reference to spacify a named range, and you can specify a named range as source for a validation list.
I have attached a copy of the workbook with your solution to this answer where the idea is put to work. The named range in question is ClientList. You will find the data validation referring to this list, and when you look at the Name Manager you will find the range referring to =Table2[Client Name] . It will shrink and expand with the table.
As we are all investing so much time in this I would like to mention my misgivings about the system. In order to check if the correct contract number was called up one has to repeat the process, meaning the list is error prone from the point of number selection. Therefore it would be better to actually show the name and have the contract number in a hidden column used for counting only. To use less space, the full name could be replaced with a human-readable abbreviation. But that raises the question of why not to use the abbreviation - even the full namein fact - for counting as well. The answer to that is that the same company might have more than one [periodic] contract. As the system stands today no provision seems to have been made for that eventuality however.