[Access 2003 - VB] Question simplissime ...

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ze Titi
Le #6285221
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
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

Patrice
Le #6285191
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





Raymond [mvp]
Le #6285181
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"
| 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
|
|
Raymond [mvp]
Le #6285171
.../...
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]" 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" 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
||
||
|
|
Stéphane Miqueu
Le #6285131
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

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

--
Ami Calmant
Stéphane

Stéphane Miqueu
Le #6285111
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


Stéphane Miqueu
Le #6285091
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

Publicité
Poster une réponse
Anonyme