How to make it so that objects don't pass through each other?
Generally, this kind of actions are made using Inverse Kinematics:
when the hand reaches the table you switch the arm from FK to IK, put the IK hand controller in the same position as reached by the FK hand controller so, in the following frames, the hand stays still as the arm is moving.