textbox : garder le focus si saisie erronée ?
Bonjour,
Je ne trouve pas la réponse à ma question dans le forum. Ce doit être bête comme chou ...
J'ai un userform avec 2 textbox : le n° de mois et le n° de semaine; je contrôle que le n° de mois est entre 1 et 12, sinon message d'erreur (ça ca va !). Mais dans ce cas je ne veux pas que le focus passe au n° de semaine et ça je n'y arrive pas.
J'ai placé une commande setfocus sur mon textbox (si il y erreur) mais rien n'y fait !
Je pense que la solution tourne autour des évennements ENTER et EXIT mais je ne comprends pas leur fonctionnement.
Pouvez vous m'aider, SVP ? Je suis crevé ! Merci d'avance.
Voila la solution pour garder le focus
Bonjour
Pour garder le focus sur un textbox en cas d'erreur est sur l'evenement BeforeUpdate voir l'exemple ci dessous de ce que j'ai l'habitude de faire ....
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Private Sub TxtDateMandat_Enter()
' je stocke la date avant la saisie par l'itulisateur
TxtDateMandat.Tag = TxtDateMandat
End Sub
Private Sub TxtDateMandat_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
' Si la saisie est incorrecte on ne valide pas la saisie avec Cancel=True
If Not IsDate(TxtDateMandat) Then
MsgBox "La saisie n'est pas une date !"
' Je recupere l'ancienne valeur
TxtDateMandat = TxtDateMandat.Tag
' Abandon de la mise à jour et focus reste sur le textbox
Cancel = True
End If
End Sub |
:ccool:
textbox : garder le focus si saisie erronée ?
merci de vos réponse mais cela ne va tjs pas ! J'avais d'ailleurs vu tout cela :
le setfocus n'agit pas comme je veux,
j'avais lu la note sur enter et exit, rien à faire et d'ailleurs je ne comprends pas le but de ces évenements ?
enfin, j'ai bien utilisé le beforeupate (sans le tag car je veux garder la saisie pour la modifier); le contrôle et le message sont ok mais le focus passe au champs suivant !
D'aures idées ? Soyez en remerciés d'avance.