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

[Access 2003 - VB] Question simplissime ...

7 réponses
Avatar
Stéphane Miqueu
Bonjour,

Il y a un truc que je ne dois pas comprendre, ou alors je ne suis pas
réveillé du tout. Je fais un test de validité de saisie à la sortie
d'une textbox. Si ce n'est pas bon, j'affiche un message et je veux
retourner en saisie dans la textbox, soit :

Private Sub PrixUnt_Exit(Cancel As Integer)
If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Me.Référence.SetFocus
End If
End Sub

Seulement ça ne fonctionne pas, si je sors de la zone avec TAB, le test
est bien effectué, le message box apparait, mais le curseur ne reste
pas dans la zone, il passe à la suivante.

Merci pour les idées.


--
Ami Calmant
Stéphane

7 réponses

Avatar
ze Titi
Bonjour Stéphane

Je pense qu'il y a une toute petite erreur... Tu sors du champ PrixUnt
et tu fais un
Référence.SetFocus
c'est à dire que tu donnes le focus au champ Référence. Je ne serais
pas surpris que ton problème vienne de là...

Dans ton message du mardi
Bonjour,

Il y a un truc que je ne dois pas comprendre, ou alors je ne suis pas
réveillé du tout. Je fais un test de validité de saisie à la sortie d'une
textbox. Si ce n'est pas bon, j'affiche un message et je veux retourner en
saisie dans la textbox, soit :

Private Sub PrixUnt_Exit(Cancel As Integer)
If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Me.Référence.SetFocus
End If
End Sub

Seulement ça ne fonctionne pas, si je sors de la zone avec TAB, le test est
bien effectué, le message box apparait, mais le curseur ne reste pas dans la
zone, il passe à la suivante.

Merci pour les idées.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Patrice
bonjour,

Je mettrais l'instruction sur après mise à jour :
If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Me.Référence.SetFocus
End If




Bonjour,

Il y a un truc que je ne dois pas comprendre, ou alors je ne suis pas
réveillé du tout. Je fais un test de validité de saisie à la sortie
d'une textbox. Si ce n'est pas bon, j'affiche un message et je veux
retourner en saisie dans la textbox, soit :

Private Sub PrixUnt_Exit(Cancel As Integer)
If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Me.Référence.SetFocus
End If
End Sub

Seulement ça ne fonctionne pas, si je sors de la zone avec TAB, le test
est bien effectué, le message box apparait, mais le curseur ne reste
pas dans la zone, il passe à la suivante.

Merci pour les idées.


--
Ami Calmant
Stéphane





Avatar
Raymond [mvp]
Bonjour.

il faut compléter ta procédure pour retourner à la saisie du même champ.
Private Sub PrixUnt_Exit(Cancel As Integer)
If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Cancel = True
End If
End Sub

en ce qui concerne ton test, il faut que Len(Me.Référence) soit égal à 6, ce
qui suppose forcément qu'une valeur Null déclenchera également ce test.
tu peux faire:
Private Sub PrixUnt_Exit(Cancel As Integer)
If Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
http://officesystem.access.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Stéphane Miqueu" a écrit dans le message de news:

| Bonjour,
|
| Il y a un truc que je ne dois pas comprendre, ou alors je ne suis pas
| réveillé du tout. Je fais un test de validité de saisie à la sortie
| d'une textbox. Si ce n'est pas bon, j'affiche un message et je veux
| retourner en saisie dans la textbox, soit :
|
| Private Sub PrixUnt_Exit(Cancel As Integer)
| If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
| MsgBox "Code article incorrect.", vbCritical
| Me.Référence.SetFocus
| End If
| End Sub
|
| Seulement ça ne fonctionne pas, si je sors de la zone avec TAB, le test
| est bien effectué, le message box apparait, mais le curseur ne reste
| pas dans la zone, il passe à la suivante.
|
| Merci pour les idées.
|
|
| --
| Ami Calmant
| Stéphane
|
|
Avatar
Raymond [mvp]
.../...
j'oubliais:
remplacer PrixUnt_Exit(Cancel As Integer)
par PrixUnt_BeforeUpdate(Cancel As Integer)

c'est plus logique mais ça ne change rien dans l'état actuel de ta
procédure. ça pourrais changer si tu avais d'autres contrôles à réaliser .

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
http://officesystem.access.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Raymond [mvp]" a écrit dans le message
de news: %
| Bonjour.
|
| il faut compléter ta procédure pour retourner à la saisie du même champ.
| Private Sub PrixUnt_Exit(Cancel As Integer)
| If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
| MsgBox "Code article incorrect.", vbCritical
| Cancel = True
| End If
| End Sub
|
| en ce qui concerne ton test, il faut que Len(Me.Référence) soit égal à 6,
ce
| qui suppose forcément qu'une valeur Null déclenchera également ce test.
| tu peux faire:
| Private Sub PrixUnt_Exit(Cancel As Integer)
| If Len(Me.Référence) <> 6 Then
| MsgBox "Code article incorrect.", vbCritical
| Cancel = True
| End If
| End Sub
|
| --
| @+
| Raymond Access MVP http://OfficeSystem.Access.free.fr/
| http://officesystem.access.over-blog.com/
| Pour débuter sur le forum: http://www.mpfa.info/
|
| Venez découvrir Open XML, le nouveau format de fichier de la suite Office
!
|
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db
|
|
| "Stéphane Miqueu" a écrit dans le message de
news:
|
|| Bonjour,
||
|| Il y a un truc que je ne dois pas comprendre, ou alors je ne suis pas
|| réveillé du tout. Je fais un test de validité de saisie à la sortie
|| d'une textbox. Si ce n'est pas bon, j'affiche un message et je veux
|| retourner en saisie dans la textbox, soit :
||
|| Private Sub PrixUnt_Exit(Cancel As Integer)
|| If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
|| MsgBox "Code article incorrect.", vbCritical
|| Me.Référence.SetFocus
|| End If
|| End Sub
||
|| Seulement ça ne fonctionne pas, si je sors de la zone avec TAB, le test
|| est bien effectué, le message box apparait, mais le curseur ne reste
|| pas dans la zone, il passe à la suivante.
||
|| Merci pour les idées.
||
||
|| --
|| Ami Calmant
|| Stéphane
||
||
|
|
Avatar
Stéphane Miqueu
ze Titi vient de nous annoncer :
Bonjour Stéphane

Je pense qu'il y a une toute petite erreur... Tu sors du champ PrixUnt et tu
fais un
Référence.SetFocus
c'est à dire que tu donnes le focus au champ Référence. Je ne serais pas
surpris que ton problème vienne de là...

Dans ton message du mardi 19/06/2007 jour


Oups, c'est juste une erreur copier/coller le pb ne vient pas de là.

--
Ami Calmant
Stéphane

Avatar
Stéphane Miqueu
Patrice a présenté l'énoncé suivant :
bonjour,

Je mettrais l'instruction sur après mise à jour :
If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Me.Référence.SetFocus
End If



J'ai bien essayé sur le AfterUpdate, mais si l'utilisateur ne fait pas
de modif alors que la valeur est erronnée, le test ne se fait pas.

--
Ami Calmant
Stéphane


Avatar
Stéphane Miqueu
Raymond [mvp] a exprimé avec précision :
Bonjour.

il faut compléter ta procédure pour retourner à la saisie du même champ.
Private Sub PrixUnt_Exit(Cancel As Integer)
If IsNull(Me.Référence) Or Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Cancel = True
End If
End Sub

en ce qui concerne ton test, il faut que Len(Me.Référence) soit égal à 6, ce
qui suppose forcément qu'une valeur Null déclenchera également ce test.
tu peux faire:
Private Sub PrixUnt_Exit(Cancel As Integer)
If Len(Me.Référence) <> 6 Then
MsgBox "Code article incorrect.", vbCritical
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
http://officesystem.access.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


Ça me parait pas mal, je test tout de suite.
... ...
Well done, ça fonctionne.
Merci pour ça et pour ton site ...

--
Ami Calmant
Stéphane