Bonjour MR
Pour te lancer tu te lances bien, car tu as mis le doigt sur un problème récurrant avec cette histoire de SetFocus dans les TextBox sur des évènement Change ou Exit...
A partir du moment où tu veux faire un MsgBox d'alerte tu auras toutes les difficultés du monde pour retourner dans ta TextBox, l'instruction SetFocus ne sera pas prise en compte. C'est un peu comme si le code se déroulait pendant l'affichage du message.
L'astuce classique consiste à avoir un autre contrôl et d'utiliser l'instruction SendKeys "{TAB}" ou "+{TAB}" pour revenir à ta Texbox1 mais c'est vraiment "Bricolo"
Tu peux aussi lancer un autre UserForm plutôt qu'un MsgBox, qui, dans son commandButton de sortie te remettra le SetFocus sur la TextBox du UserForm... (dans ce cas ne pas oublier d'écrire en entier UserForm1.TextBox1.SetFocus)
Ou tu peux simplement faire ceci, le User n'aura pas de message, mais il comprendra vite qu'il ne peut pas saisir autre chose que du numérique !!! (lol) Enfin moi c'est comme ceci que je procède dans des apllis pros.
Private Sub TextBox1_change()
If IsNumeric(TextBox1.Value) = False Then
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If
End Sub
Là pas de risque de saisir autre chose et pas de souci de Focus...
Une autre et ultime astuce consisterait à utiliser dans le Userform un Label qui contiendrait ton message et qui serait par défaut en status.visible = false qui deviendrait true quand il y a erreur...
Bon Courage
@+Thierry