Rappel: il n'y a pas correspondance entre l'index du Control dans le UserForm et son TabIndex.
        
        
     
Bonjour
ça c'est par ce que quand tu construit tu ajoute et/ou tu enlève  des controls
et donc par conséquent à la fin le tabindex n'est pas celui que tu voudrais
sinon le tabindex  suit TOUJOURS  l'ordre dans le quel tu les a construits dans le( parent direct)
la seule chose a faire pour travailler proprement  , c'est de contrôler et modifier le tabindex de tes controls  à la fin
on évite ainsi des codes en cul de bouteille
et là encore une fois on cible par le parent  dans le cas de frame par exemple
set ctrl=frame1.controls(x+1)'x pour la valeur de tabindex donc controls suivant  DANS LA FRAME!!
sinon  en vba  par exemple
 set ctrl=textbox1
va te donner le premier controls s'appelant "textbox1" selon bien sur le tabindex
et c'est pas forcement celui là que tu cible car il peux avoir 36 "textbox1" dans 36 frames
d'ou l'importence de modifier le nom du control à la construction
puisque sans préfixe c'est la première occurrence  donc
set ctrl=Frm1TxtBox 'le nom du textbox dans la frame1
set suivant=ctrl.parent.controls(ctrl.tabindex+1)
pas de code alambiqué , du pur ciblage et indexation en bon et du forme