La méthode que j'ai tendance à préconiser, consiste à vérifier la validité de la saisie au niveau du contrôle, lorsque l'utilisateur opère la saisie. Et BeforeUpdate est un bon choix lorsqu'on peut l'utiliser.
Tant qu'il saisit on le laisse faire sans contrainte, pour lui permettre de saisir éventuellement dans l'ordre qui a ses préférences, donc quand rien n'est saisi, on considère que la saisie n'est pas invalide et on n'intervient pas.
Par contre, lorsqu'il validera l'ensemble de ses saisies, on commence par vérifier si les champs qu'on a décrété obligatoire sont saisis ! Et lorsqu'on trouve vide une TextBox qui aurait dû avoir une saisie, on l'y renvoie :
MsgBox "Saisie incomplète !..."
TextBoxX.SetFocus : Exit Sub
(Et là tu utilises SetFocus pour resélectionner la TextBox défaillante...
Cordialement.