Bonsoir
@agourn,
Dans ce classeur je ne vois pas de problème particulier parce que toutes tes TextBoxes sont hors Frame.
La description de tes problèmes correspond assez bien au commentaire que j'ai mis dans le post #4.
Mais il n'y a aucune solution à ce phénomène puisqu'on est totalement dépendant de la gestion qu'Excel fait des évènements.
Donc il faut retirer toutes les TextBoxes des Frames pour utiliser _Exit().
Et si le phénomène de retard sur l'_Exit() persiste c'est qu'il reste des TextBoxes en Frame.
Il y a aussi la situation,
normale cette fois, où,
Frame ou pas Frame, on passe dans l'_Exit() après que la fermeture du UserForm a été provoquée, quelque soit la raison (CloseMode) et là ça part en live à l'utilisation des objects du UserForm si en premier dans l'_Exit() il n'y a pas un test du genre
If Not Me.Visible Then Exit Sub.
Pour les contrôles des valeurs saisies, tu n'es pas obligé de le faire dès la sortie des zones sur l'_Exit().
Tu peux ajouter un bouton <Valider> qui déclenchera le contrôles de toutes les valeurs et repositionnera la Focus sur la 1ère zone détectée en erreur. Ça va aussi alléger ton code.
Et si une valeur dépend d'une autre, il vaut mieux la traiter sur l'_Enter() de la 1ère que sur l'_Exit() de la 2ème.