A vide (sans lancer de code et en inhibant ton Initialise) ça fonctionne dans l'ordre voulu en faisant comme je te disais.
Maintenant si en sortie du traitement d'un événement ce n'est plus le bon objet qui a le focus (à ce moment là tu as SetFocus à utiliser, tant qu'à faire sur l'objet suivant voulu comme ça l'utilisateur n'a même plus Tab à faire) ) et ou que celui qu'on doit atteindre est enabled=false, Tab n'aura pas le fonctionnement attendu, rien que de très normal.
J'ai voulu jeter un oeil au code mais quand j'ai vu un on error resume next (voire plusieurs quand un seul ne suffisait pas pour mettre la poussière sous le tapis) et 30 lignes plus bas on error goto 0 je considère que ce n'est plus pour moi et j'abandonne.
Contrairement à ce que tu sembles penser error resume next ne répare pas tout seul les bugs et autres bêtises écrites. Faire la politique de l'autruche ne fait pas avancer.
Les bugs on les répare en totalité pour s'en débarrasser avant de continuer à écrire quoique ce soit d'autre. Quand on en a partout difficile de sortir la tête de l'eau ensuite...
Il ne doit rester que les gestions d'erreur 'normales' parfaitement maîtrisées et traitées.
eric