Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

TextBox

11 réponses
Avatar
jepac
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message s'affiche et
que le focus retourne sur la Textbox - Les messages s'affichent mais le focus
ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub

10 réponses

1 2
Avatar
Circé
Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut mieux
que tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire car le message interviendra dès la saisie de la première lettre.
On ajoute un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message s'affiche et
que le focus retourne sur la Textbox - Les messages s'affichent mais le focus
ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub


Avatar
heureux-oli
Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut mieux que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se faire
car le message interviendra dès la saisie de la première lettre. On ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub






Avatar
jepac
Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus au
contrôle sortant le focus reste au contrôle désign' en premier, voilà comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut mieux que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se faire
car le message interviendra dès la saisie de la première lettre. On ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub











Avatar
heureux-oli
Essaie au lieu de OnExit d'utiliser AfterUpdate.
J'utilise peu de OnExit, si je ne change rien, elle s'exécute quand même,
alors que AfterUpdate ne s'exécute que si il y a changement.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de news:

Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre
contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus au
contrôle sortant le focus reste au contrôle désign' en premier, voilà
comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et
ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut mieux
que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire
car le message interviendra dès la saisie de la première lettre. On
ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message
s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent
mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub













Avatar
jepac

Private Sub TextBox1_AfterUpdate()
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else
If Not IsNumeric(Me.TextBox1.Text) Then
Beep
MsgBox "Chiffres exclusivement"
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
End If
End If
End Sub


Essaie au lieu de OnExit d'utiliser AfterUpdate.
J'utilise peu de OnExit, si je ne change rien, elle s'exécute quand même,
alors que AfterUpdate ne s'exécute que si il y a changement.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de news:

Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre
contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus au
contrôle sortant le focus reste au contrôle désign' en premier, voilà
comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et
ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut mieux
que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire
car le message interviendra dès la saisie de la première lettre. On
ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message
s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent
mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub


















Avatar
heureux-oli
Sut on second contrôle tu mets


Private Sub TextBox2_Enter()
Me.TextBox1.SetFocus

End Sub
--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de news:

Rien n'y fait le focus ne retourne pas à la TextBox1, voici ce qui est

Private Sub TextBox1_AfterUpdate()
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else
If Not IsNumeric(Me.TextBox1.Text) Then
Beep
MsgBox "Chiffres exclusivement"
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
End If
End If
End Sub


Essaie au lieu de OnExit d'utiliser AfterUpdate.
J'utilise peu de OnExit, si je ne change rien, elle s'exécute quand même,
alors que AfterUpdate ne s'exécute que si il y a changement.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de
news:

Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre
contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus au
contrôle sortant le focus reste au contrôle désign' en premier, voilà
comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et
ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut
mieux
que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire
car le message interviendra dès la saisie de la première lettre. On
ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas
trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à
suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message
s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent
mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub




















Avatar
Circé
Bonjour,

Si tu suis mon idée au moins pour l'obligation de saisir des chiffres,
le problème sera déjà divisé par 2 ! Et de plus ça évite de faire des
fautes de frappe pour rien !

Circé
http://faqword.free.fr

jepac avait soumis l'idée :
Rien n'y fait le focus ne retourne pas à la TextBox1, voici ce qui est écrit
:

Private Sub TextBox1_AfterUpdate()
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else
If Not IsNumeric(Me.TextBox1.Text) Then
Beep
MsgBox "Chiffres exclusivement"
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
End If
End If
End Sub


Essaie au lieu de OnExit d'utiliser AfterUpdate.
J'utilise peu de OnExit, si je ne change rien, elle s'exécute quand même,
alors que AfterUpdate ne s'exécute que si il y a changement.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de news:

Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre
contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus au
contrôle sortant le focus reste au contrôle désign' en premier, voilà
comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et
ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut mieux
que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire
car le message interviendra dès la saisie de la première lettre. On
ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message
s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent
mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub




















Avatar
jepac
Merci

Pour l'instant j'ai résolu mon problème de SetFocus en mettant la macro à
l'entrée de la TextBox2 au lieu de la sortie de la TextBox1.
quant à ta macro pour les chiffres j'ai une erreur de compilation au niveau
de (KeyAscii)

Merci
Jean-Paul


Bonjour,

Si tu suis mon idée au moins pour l'obligation de saisir des chiffres,
le problème sera déjà divisé par 2 ! Et de plus ça évite de faire des
fautes de frappe pour rien !

Circé
http://faqword.free.fr

jepac avait soumis l'idée :
Rien n'y fait le focus ne retourne pas à la TextBox1, voici ce qui est écrit
:

Private Sub TextBox1_AfterUpdate()
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else
If Not IsNumeric(Me.TextBox1.Text) Then
Beep
MsgBox "Chiffres exclusivement"
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
End If
End If
End Sub


Essaie au lieu de OnExit d'utiliser AfterUpdate.
J'utilise peu de OnExit, si je ne change rien, elle s'exécute quand même,
alors que AfterUpdate ne s'exécute que si il y a changement.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de news:

Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre
contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus au
contrôle sortant le focus reste au contrôle désign' en premier, voilà
comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et
ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut mieux
que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire
car le message interviendra dès la saisie de la première lettre. On
ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message
s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent
mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub

























Avatar
heureux-oli
Malheureusement, avec le code que j'ai ajouté, il faut un contrôle caché.
Si le contrôle est utilisable, on ne peut y entrer.

La solution de Circé pour empêcher la saisie des lettres plus efficace que
le focus.
Mais ne résout pas le problème de la longueur à respecter.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"heureux-oli" a écrit dans le message de news:

Sur ton second contrôle tu mets


Private Sub TextBox2_Enter()
Me.TextBox1.SetFocus

End Sub
--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de news:

Rien n'y fait le focus ne retourne pas à la TextBox1, voici ce qui est

Private Sub TextBox1_AfterUpdate()
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else
If Not IsNumeric(Me.TextBox1.Text) Then
Beep
MsgBox "Chiffres exclusivement"
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
End If
End If
End Sub


Essaie au lieu de OnExit d'utiliser AfterUpdate.
J'utilise peu de OnExit, si je ne change rien, elle s'exécute quand
même,
alors que AfterUpdate ne s'exécute que si il y a changement.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de
news:

Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre
contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus au
contrôle sortant le focus reste au contrôle désign' en premier, voilà
comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et
ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut
mieux
que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire
car le message interviendra dès la saisie de la première lettre. On
ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas
trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à
suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message
s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent
mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub
























Avatar
heureux-oli
J'ai testé le code de Circè et chez moi il passe.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de news:

Merci

Pour l'instant j'ai résolu mon problème de SetFocus en mettant la macro à
l'entrée de la TextBox2 au lieu de la sortie de la TextBox1.
quant à ta macro pour les chiffres j'ai une erreur de compilation au
niveau
de (KeyAscii)

Merci
Jean-Paul


Bonjour,

Si tu suis mon idée au moins pour l'obligation de saisir des chiffres,
le problème sera déjà divisé par 2 ! Et de plus ça évite de faire des
fautes de frappe pour rien !

Circé
http://faqword.free.fr

jepac avait soumis l'idée :
Rien n'y fait le focus ne retourne pas à la TextBox1, voici ce qui est
écrit
:

Private Sub TextBox1_AfterUpdate()
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else
If Not IsNumeric(Me.TextBox1.Text) Then
Beep
MsgBox "Chiffres exclusivement"
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
End If
End If
End Sub


Essaie au lieu de OnExit d'utiliser AfterUpdate.
J'utilise peu de OnExit, si je ne change rien, elle s'exécute quand
même,
alors que AfterUpdate ne s'exécute que si il y a changement.


--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"jepac" a écrit dans le message de
news:

Bonsoir et merci à vous deux ( et bonne année par la même occasion)

Pour Circé : j'ai une erreur de compilation au niveau de (KeyAscii).

Pour heureux-oli : rien à faire, je peux donner le focus à un autre
contrôle
sans problème mais lorsuqu'à la suite j'essaie de redonner le focus
au
contrôle sortant le focus reste au contrôle désign' en premier, voilà
comment

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox2.SetFocus
Me.TextBox1.SetFocus
Exit Sub
Else.........

Merci
Jean-Paul


Bonjour,

Pour le SetFocus, essaie de donner le focus à un autre contrôle et
ensuite à
ton Textbox.

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonsoir Jean-Paul,

En ce qui concerne l'obligation de saisir des chiffres, il vaut
mieux
que
tu utilises l'événement KeyPress... Ainsi l'erreur ne pourra pas se
faire
car le message interviendra dès la saisie de la première lettre. On
ajoute
un beep pour réveiller ! ;)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Beep
MsgBox "Chiffres exclusivement!"
End If

End Sub

Par contre, pour le SetFocus avec l'événement Exit, je ne vois pas
trop
comment on peut faire. A la place du SetFocus, tu peux mettre
Cancel= True
mais dans ce cas tu ne pourras pas sortir de la boîte. Donc, à
suivre..
Pour l'instant il est trop tard ! ;)

Circé
http://faqword.free.fr

jepac a présenté l'énoncé suivant :
Bonsoir,

J'ai écrit la macro suivante pour qu'en cas d'erreur un message
s'affiche
et que le focus retourne sur la Textbox - Les messages s'affichent
mais
le focus ne retourne pas sur la TextBox - Pourquoi ?

Merci de votre aide
Jean-Paul

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.TextLength < 10 Then
MsgBox ("Le siren doit être composé de 10 chiffres")
Me.TextBox1.SetFocus
End If
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox "Chiffres exclusivement"
Me.TextBox1.SetFocus
End If

End Sub



























1 2