Luc, Sai Prasad’s recommendations are excellent. In addition, note the status of the checkbox for “Tasks will always honor their constraint dates” in the Schedule Options (under “Scheduling options for this project”.) The box is checked by default, allowing tasks with late constraints (but not their predecessors) to violate the scheduling precedence logic. This is what you have observed. Un-checking the box restores the primacy of the logic, which is more consistent with other project scheduling tools.
The behavior you would like to see – automatic acceleration of all tasks necessary to meet a constraint – is not something that Project does. Instead, all the tasks needing acceleration have negative Total Slack and are automatically marked Critical. You can alleviate the negative slack by starting the project earlier, by crashing (shortening task durations), or by fast-tracking (overlapping some tasks). These are project management decisions best not left to software.