OVH Cloud OVH Cloud

Setfocus

4 réponses
Avatar
Denys
Bonjour =E0 tous,

Dans la macro qui suit, je d=E9sire que le curseur demeure=20
dans le Textbox8 si la valeur entr=E9e est diff=E9rente de 9=20
chiffres....


Private Sub TextBox8_Exit(ByVal Cancel As=20
MSForms.ReturnBoolean)
If Len(TextBox8.Value) <> 9 Then
msg =3D "SIN number must have 9 digits"
dialogstyle =3D vbOKOnly + vbCritical
Title =3D "SIN not valid"
reponse =3D MsgBox(msg, dialogstyle,=20
Title)
TextBox8.Value =3D ""
TextBox8.SelStart =3D 0
TextBox8.SetFocus
Beep
End If
End Sub

Cependant, m=EAme si le message apparait, Excel se dirige=20
vers le Textbox9.... C'est pas vraiment pratique..

Z'auriez une id=E9e???

Merci beaucoup

Denys

4 réponses

Avatar
Ellimac
Bonjour,

Utilise plutôt l'évènement sur Enter du contrôle suivant.

Camille

-----Message d'origine-----
Bonjour à tous,

Dans la macro qui suit, je désire que le curseur demeure
dans le Textbox8 si la valeur entrée est différente de 9
chiffres....


Private Sub TextBox8_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Len(TextBox8.Value) <> 9 Then
msg = "SIN number must have 9 digits"
dialogstyle = vbOKOnly + vbCritical
Title = "SIN not valid"
reponse = MsgBox(msg, dialogstyle,
Title)
TextBox8.Value = ""
TextBox8.SelStart = 0
TextBox8.SetFocus
Beep
End If
End Sub

Cependant, même si le message apparait, Excel se dirige
vers le Textbox9.... C'est pas vraiment pratique..

Z'auriez une idée???

Merci beaucoup

Denys
.



Avatar
Denys
Eurêka!!

Après avoir gossé sur Google, j'ai trouvé une réponse de
Denis Michon....Je l'ai adapté, et voilà:

Private Sub TextBox8_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Len(TextBox8.Value) <> 9 Then
msg = "SIN number must have 9 digits"
dialogstyle = vbOKOnly + vbCritical
Title = "SIN not valid"
reponse = MsgBox(msg, dialogstyle,
Title)
TextBox8.Value = ""
TextBox8.SelStart = 0
Cancel = True
Beep
End If
End Sub

Donc, pas de Setfocus, juste cancel = true et ça
fonctionne très bien..

Merci

Denys


-----Original Message-----
Bonjour à tous,

Dans la macro qui suit, je désire que le curseur demeure
dans le Textbox8 si la valeur entrée est différente de 9
chiffres....


Private Sub TextBox8_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Len(TextBox8.Value) <> 9 Then
msg = "SIN number must have 9 digits"
dialogstyle = vbOKOnly + vbCritical
Title = "SIN not valid"
reponse = MsgBox(msg, dialogstyle,
Title)
TextBox8.Value = ""
TextBox8.SelStart = 0
TextBox8.SetFocus
Beep
End If
End Sub

Cependant, même si le message apparait, Excel se dirige
vers le Textbox9.... C'est pas vraiment pratique..

Z'auriez une idée???

Merci beaucoup

Denys
.



Avatar
Denys
Salut Camille,

J'avais essayé, mais ça ne fonctionne pas... Mais en
fouillant sur Google, j'ai vu une réponse de Denis Michon
que j'ai adaptée. Regarde-la, je l'ai mis dans le fil..

Bonne journée

Denys


-----Original Message-----
Bonjour,

Utilise plutôt l'évènement sur Enter du contrôle suivant.

Camille

-----Message d'origine-----
Bonjour à tous,

Dans la macro qui suit, je désire que le curseur demeure
dans le Textbox8 si la valeur entrée est différente de 9
chiffres....


Private Sub TextBox8_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Len(TextBox8.Value) <> 9 Then
msg = "SIN number must have 9 digits"
dialogstyle = vbOKOnly + vbCritical
Title = "SIN not valid"
reponse = MsgBox(msg, dialogstyle,
Title)
TextBox8.Value = ""
TextBox8.SelStart = 0
TextBox8.SetFocus
Beep
End If
End Sub

Cependant, même si le message apparait, Excel se dirige
vers le Textbox9.... C'est pas vraiment pratique..

Z'auriez une idée???

Merci beaucoup

Denys
.

.





Avatar
FR
Bonjour,
J'ai remarqueé que la fonction "SetFocus" ne s'exécute pas
correctement sous Windows XP, alors que je n'ai jamais eu
de problème sous Windows 97.
Avez-vous trouvé une solution à ce problème depuis votre
dernier message ?
Merci d'avance
FR

-----Message d'origine-----
Bonjour à tous,

Dans la macro qui suit, je désire que le curseur demeure
dans le Textbox8 si la valeur entrée est différente de 9
chiffres....


Private Sub TextBox8_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Len(TextBox8.Value) <> 9 Then
msg = "SIN number must have 9 digits"
dialogstyle = vbOKOnly + vbCritical
Title = "SIN not valid"
reponse = MsgBox(msg, dialogstyle,
Title)
TextBox8.Value = ""
TextBox8.SelStart = 0
TextBox8.SetFocus
Beep
End If
End Sub

Cependant, même si le message apparait, Excel se dirige
vers le Textbox9.... C'est pas vraiment pratique..

Z'auriez une idée???

Merci beaucoup

Denys
.