Fonction SetFocus

  • Initiateur de la discussion Benoit
  • Date de début
B

Benoit

Guest
Bonjour,

Voici un petit bout de code :

Private Sub TextBox30_AfterUpdate()
'
' Permet de valider si le contenu du textbox
' est numérique
'
If IsNumeric(TextBox30.Value) = False Then
MsgBox "Vous devez entrer une valeur numérique Exemple : 3456.32", vbOKOnly + vbInformation
TextBox30.Value = ""
TextBox30.SetFocus

Exit Sub
End If

End Sub

Après la mise à jour du champ TextBox30, la macro vérifie que l'information entrée est numérique.

Si non :
- un message s'affiche à l'utilisateur
- la valeur du TextBox est remis à vide

Là ou ça accroche, c'est que j'aimerais que le curseur se replace immédiatement dans le TexteBox30 et c'est ce que je croyais que ferais la commande :

TextBox30.SetFocus.

Après avoir cliqué sur OK, le TextBox se remet bien à vide mais c'est le TextBox suivant qui reçoit le focus et non celui qui était en erreur...

Merci !
 
L

Lord Nelson

Guest
Salut Benoit,

A mon avis, il serait préférable de placer ton code dans l'évènement "BeforeUpDate", comme ceci :

Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox2.Value <> "" Then
If IsNumeric(TextBox2.Value) = False Then
MsgBox "Vous devez entrer une valeur numérique Exemple : 3456.32", vbOKOnly + vbInformation
TextBox2.Value = ""
Cancel = True
End If
End If
End Sub

Cela te permet d'annuler la saisie (Cancel = True) avant de passer au contrôle suivant. Le SetFocus n'est pas nécessaire à ce moment précis.

A+
Horatio
 

Discussions similaires

Réponses
5
Affichages
409
  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
321

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal