Ca ne marche pas, le message apparaît aussi même si je mets mon éval sous BeforeUpdate
Il faut annuler l'événement (Cancel=True).
domivax
Bonsoir,
Au fait ma demande de placer les ordres de validation sur MonBouton est la suivante :
Ce bouton sert en quelque sorte à valider les entrées ou modifications de tous mes champs du formulaire et si les critères de validation pour chaque champ sont OK, les champs se mettent tous en Enabled = False et si un champ est mal alimenté, il se met en rouge.
Du genre :
Private Sub OK_Click() Dim Msg, Style, Title
'order validation If Me.InvoiceSupplier.Value = "" Or IsNull(Me.InvoiceSupplier) = True Then Me.InvoiceSupplier.BorderColor = 255 Me.InvoiceSupplier.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceSupplier.SetFocus Exit Sub
ElseIf Len(Me.InvoiceNr) > 30 Then Me.InvoiceNr.BorderColor = 255 Me.InvoiceNr.BackColor = 11184895 Msg = "This data is too lengthy." & Chr(13) & Chr(13) & "30 characters maximum ! " & Chr(13) Style = vbOKOnly + vbInformation Response = "Error" Reponse = MsgBox(Msg, Style, Title) Me.InvoiceNr.SetFocus Exit Sub
ElseIf Me.InvoiceDate.Value = "" Or IsNull(Me.InvoiceDate) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Not IsDate(Me.InvoiceDate.Value) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "This data must be a valid date !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Me.InvoiceAmount.Value = "" Or IsNull(Me.InvoiceAmount) = True Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf IsNumeric(Me.InvoiceAmount.Value) = False Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data must be a number !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf Me.InvoiceCurrency.Value = "" Or IsNull(Me.InvoiceCurrency) = True Then Me.InvoiceCurrency.BorderColor = 255 Me.InvoiceCurrency.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceCurrency.SetFocus Exit Sub
Else
''''' tous les champs en Enabled = False
End If End Sub
et voilà pour ête plus prècis.
Merci pour votre aide. A bientôt Xavier
Bonsoir,
Au fait ma demande de placer les ordres de validation sur MonBouton
est la suivante :
Ce bouton sert en quelque sorte à valider les entrées ou modifications
de tous mes champs du formulaire et si les critères de validation pour
chaque champ sont OK, les champs se mettent tous en Enabled = False et
si un champ est mal alimenté, il se met en rouge.
Du genre :
Private Sub OK_Click()
Dim Msg, Style, Title
'order validation
If Me.InvoiceSupplier.Value = "" Or IsNull(Me.InvoiceSupplier) = True
Then
Me.InvoiceSupplier.BorderColor = 255
Me.InvoiceSupplier.BackColor = 11184895
Msg = "Data is missing !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceSupplier.SetFocus
Exit Sub
ElseIf Len(Me.InvoiceNr) > 30 Then
Me.InvoiceNr.BorderColor = 255
Me.InvoiceNr.BackColor = 11184895
Msg = "This data is too lengthy." & Chr(13) & Chr(13) & "30
characters maximum ! " & Chr(13)
Style = vbOKOnly + vbInformation
Response = "Error"
Reponse = MsgBox(Msg, Style, Title)
Me.InvoiceNr.SetFocus
Exit Sub
ElseIf Me.InvoiceDate.Value = "" Or IsNull(Me.InvoiceDate) = True Then
Me.InvoiceDate.BorderColor = 255
Me.InvoiceDate.BackColor = 11184895
Msg = "Data is missing !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceDate.SetFocus
Exit Sub
ElseIf Not IsDate(Me.InvoiceDate.Value) = True Then
Me.InvoiceDate.BorderColor = 255
Me.InvoiceDate.BackColor = 11184895
Msg = "This data must be a valid date !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceDate.SetFocus
Exit Sub
ElseIf Me.InvoiceAmount.Value = "" Or IsNull(Me.InvoiceAmount) = True
Then
Me.InvoiceAmount.BorderColor = 255
Me.InvoiceAmount.BackColor = 11184895
Msg = "Data is missing !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceAmount.SetFocus
Exit Sub
ElseIf IsNumeric(Me.InvoiceAmount.Value) = False Then
Me.InvoiceAmount.BorderColor = 255
Me.InvoiceAmount.BackColor = 11184895
Msg = "Data must be a number !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceAmount.SetFocus
Exit Sub
Au fait ma demande de placer les ordres de validation sur MonBouton est la suivante :
Ce bouton sert en quelque sorte à valider les entrées ou modifications de tous mes champs du formulaire et si les critères de validation pour chaque champ sont OK, les champs se mettent tous en Enabled = False et si un champ est mal alimenté, il se met en rouge.
Du genre :
Private Sub OK_Click() Dim Msg, Style, Title
'order validation If Me.InvoiceSupplier.Value = "" Or IsNull(Me.InvoiceSupplier) = True Then Me.InvoiceSupplier.BorderColor = 255 Me.InvoiceSupplier.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceSupplier.SetFocus Exit Sub
ElseIf Len(Me.InvoiceNr) > 30 Then Me.InvoiceNr.BorderColor = 255 Me.InvoiceNr.BackColor = 11184895 Msg = "This data is too lengthy." & Chr(13) & Chr(13) & "30 characters maximum ! " & Chr(13) Style = vbOKOnly + vbInformation Response = "Error" Reponse = MsgBox(Msg, Style, Title) Me.InvoiceNr.SetFocus Exit Sub
ElseIf Me.InvoiceDate.Value = "" Or IsNull(Me.InvoiceDate) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Not IsDate(Me.InvoiceDate.Value) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "This data must be a valid date !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Me.InvoiceAmount.Value = "" Or IsNull(Me.InvoiceAmount) = True Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf IsNumeric(Me.InvoiceAmount.Value) = False Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data must be a number !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf Me.InvoiceCurrency.Value = "" Or IsNull(Me.InvoiceCurrency) = True Then Me.InvoiceCurrency.BorderColor = 255 Me.InvoiceCurrency.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceCurrency.SetFocus Exit Sub
Else
''''' tous les champs en Enabled = False
End If End Sub
et voilà pour ête plus prècis.
Merci pour votre aide. A bientôt Xavier
Michel_D
Bonsoir,
Au fait ma demande de placer les ordres de validation sur MonBouton est la suivante :
Ce bouton sert en quelque sorte à valider les entrées ou modifications de tous mes champs du formulaire et si les critères de validation pour chaque champ sont OK, les champs se mettent tous en Enabled = False et si un champ est mal alimenté, il se met en rouge.
Du genre :
Private Sub OK_Click() Dim Msg, Style, Title
'order validation If Me.InvoiceSupplier.Value = "" Or IsNull(Me.InvoiceSupplier) = True Then Me.InvoiceSupplier.BorderColor = 255 Me.InvoiceSupplier.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceSupplier.SetFocus Exit Sub
ElseIf Len(Me.InvoiceNr) > 30 Then Me.InvoiceNr.BorderColor = 255 Me.InvoiceNr.BackColor = 11184895 Msg = "This data is too lengthy." & Chr(13) & Chr(13) & "30 characters maximum ! " & Chr(13) Style = vbOKOnly + vbInformation Response = "Error" Reponse = MsgBox(Msg, Style, Title) Me.InvoiceNr.SetFocus Exit Sub
ElseIf Me.InvoiceDate.Value = "" Or IsNull(Me.InvoiceDate) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Not IsDate(Me.InvoiceDate.Value) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "This data must be a valid date !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Me.InvoiceAmount.Value = "" Or IsNull(Me.InvoiceAmount) = True Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf IsNumeric(Me.InvoiceAmount.Value) = False Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data must be a number !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf Me.InvoiceCurrency.Value = "" Or IsNull(Me.InvoiceCurrency) > True Then Me.InvoiceCurrency.BorderColor = 255 Me.InvoiceCurrency.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceCurrency.SetFocus Exit Sub
Else
''''' tous les champs en Enabled = False
End If End Sub
et voilà pour ête plus prècis.
Merci pour votre aide. A bientôt Xavier
Les erreurs de saisie de type de donnée doivent normalement être géré au niveau du contrôle concerné et l'événement BeforeUpdate est à utiliser puisqu'il permet d'annuler l'opération.
Bonsoir,
Au fait ma demande de placer les ordres de validation sur MonBouton
est la suivante :
Ce bouton sert en quelque sorte à valider les entrées ou modifications
de tous mes champs du formulaire et si les critères de validation pour
chaque champ sont OK, les champs se mettent tous en Enabled = False et
si un champ est mal alimenté, il se met en rouge.
Du genre :
Private Sub OK_Click()
Dim Msg, Style, Title
'order validation
If Me.InvoiceSupplier.Value = "" Or IsNull(Me.InvoiceSupplier) = True
Then
Me.InvoiceSupplier.BorderColor = 255
Me.InvoiceSupplier.BackColor = 11184895
Msg = "Data is missing !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceSupplier.SetFocus
Exit Sub
ElseIf Len(Me.InvoiceNr) > 30 Then
Me.InvoiceNr.BorderColor = 255
Me.InvoiceNr.BackColor = 11184895
Msg = "This data is too lengthy." & Chr(13) & Chr(13) & "30
characters maximum ! " & Chr(13)
Style = vbOKOnly + vbInformation
Response = "Error"
Reponse = MsgBox(Msg, Style, Title)
Me.InvoiceNr.SetFocus
Exit Sub
ElseIf Me.InvoiceDate.Value = "" Or IsNull(Me.InvoiceDate) = True Then
Me.InvoiceDate.BorderColor = 255
Me.InvoiceDate.BackColor = 11184895
Msg = "Data is missing !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceDate.SetFocus
Exit Sub
ElseIf Not IsDate(Me.InvoiceDate.Value) = True Then
Me.InvoiceDate.BorderColor = 255
Me.InvoiceDate.BackColor = 11184895
Msg = "This data must be a valid date !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceDate.SetFocus
Exit Sub
ElseIf Me.InvoiceAmount.Value = "" Or IsNull(Me.InvoiceAmount) = True
Then
Me.InvoiceAmount.BorderColor = 255
Me.InvoiceAmount.BackColor = 11184895
Msg = "Data is missing !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceAmount.SetFocus
Exit Sub
ElseIf IsNumeric(Me.InvoiceAmount.Value) = False Then
Me.InvoiceAmount.BorderColor = 255
Me.InvoiceAmount.BackColor = 11184895
Msg = "Data must be a number !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceAmount.SetFocus
Exit Sub
ElseIf Me.InvoiceCurrency.Value = "" Or IsNull(Me.InvoiceCurrency) > True Then
Me.InvoiceCurrency.BorderColor = 255
Me.InvoiceCurrency.BackColor = 11184895
Msg = "Data is missing !" & Chr(13)
Style = vbOKOnly + vbInformation
Title = "Error"
Response = MsgBox(Msg, Style, Title)
Me.InvoiceCurrency.SetFocus
Exit Sub
Else
''''' tous les champs en Enabled = False
End If
End Sub
et voilà pour ête plus prècis.
Merci pour votre aide.
A bientôt
Xavier
Les erreurs de saisie de type de donnée doivent normalement être
géré au niveau du contrôle concerné et l'événement BeforeUpdate
est à utiliser puisqu'il permet d'annuler l'opération.
Au fait ma demande de placer les ordres de validation sur MonBouton est la suivante :
Ce bouton sert en quelque sorte à valider les entrées ou modifications de tous mes champs du formulaire et si les critères de validation pour chaque champ sont OK, les champs se mettent tous en Enabled = False et si un champ est mal alimenté, il se met en rouge.
Du genre :
Private Sub OK_Click() Dim Msg, Style, Title
'order validation If Me.InvoiceSupplier.Value = "" Or IsNull(Me.InvoiceSupplier) = True Then Me.InvoiceSupplier.BorderColor = 255 Me.InvoiceSupplier.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceSupplier.SetFocus Exit Sub
ElseIf Len(Me.InvoiceNr) > 30 Then Me.InvoiceNr.BorderColor = 255 Me.InvoiceNr.BackColor = 11184895 Msg = "This data is too lengthy." & Chr(13) & Chr(13) & "30 characters maximum ! " & Chr(13) Style = vbOKOnly + vbInformation Response = "Error" Reponse = MsgBox(Msg, Style, Title) Me.InvoiceNr.SetFocus Exit Sub
ElseIf Me.InvoiceDate.Value = "" Or IsNull(Me.InvoiceDate) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Not IsDate(Me.InvoiceDate.Value) = True Then Me.InvoiceDate.BorderColor = 255 Me.InvoiceDate.BackColor = 11184895 Msg = "This data must be a valid date !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceDate.SetFocus Exit Sub
ElseIf Me.InvoiceAmount.Value = "" Or IsNull(Me.InvoiceAmount) = True Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf IsNumeric(Me.InvoiceAmount.Value) = False Then Me.InvoiceAmount.BorderColor = 255 Me.InvoiceAmount.BackColor = 11184895 Msg = "Data must be a number !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceAmount.SetFocus Exit Sub
ElseIf Me.InvoiceCurrency.Value = "" Or IsNull(Me.InvoiceCurrency) > True Then Me.InvoiceCurrency.BorderColor = 255 Me.InvoiceCurrency.BackColor = 11184895 Msg = "Data is missing !" & Chr(13) Style = vbOKOnly + vbInformation Title = "Error" Response = MsgBox(Msg, Style, Title) Me.InvoiceCurrency.SetFocus Exit Sub
Else
''''' tous les champs en Enabled = False
End If End Sub
et voilà pour ête plus prècis.
Merci pour votre aide. A bientôt Xavier
Les erreurs de saisie de type de donnée doivent normalement être géré au niveau du contrôle concerné et l'événement BeforeUpdate est à utiliser puisqu'il permet d'annuler l'opération.
domivax
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then If IsNumeric(Me.CurrencyRate.Value) = False Then MsgBox "Data must be a number !" & Chr(13), vbInformation, "Error" Cancel = True End If End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur de ma chambre et rien n'y fait).... :-) ..... Qu'est-ce que je fais de faux ?
Merci pour vos réponses. A bientôt.
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then
If IsNumeric(Me.CurrencyRate.Value) = False Then
MsgBox "Data must be a number !" & Chr(13), vbInformation,
"Error"
Cancel = True
End If
End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque
sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur
de ma chambre et rien n'y fait).... :-)
..... Qu'est-ce que je fais de faux ?
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then If IsNumeric(Me.CurrencyRate.Value) = False Then MsgBox "Data must be a number !" & Chr(13), vbInformation, "Error" Cancel = True End If End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur de ma chambre et rien n'y fait).... :-) ..... Qu'est-ce que je fais de faux ?
Merci pour vos réponses. A bientôt.
Pierre CFI [mvp]
essaie Private Sub Nom_KeyPress(KeyAscii As Integer) If Not IsNumeric(Chr(KeyAscii)) Then MsgBox "erreur" KeyAscii = 0 End If
End Sub
-- Pierre SALAUN MVP Access *******************************************************
a écrit dans le message de news:
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then If IsNumeric(Me.CurrencyRate.Value) = False Then MsgBox "Data must be a number !" & Chr(13), vbInformation, "Error" Cancel = True End If End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur de ma chambre et rien n'y fait).... :-) ..... Qu'est-ce que je fais de faux ?
Merci pour vos réponses. A bientôt.
essaie
Private Sub Nom_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) Then
MsgBox "erreur"
KeyAscii = 0
End If
End Sub
--
Pierre SALAUN
MVP Access
*******************************************************
<domivax@hotmail.com> a écrit dans le message de news:
adc78402-7f29-4048-a0cf-7ea09d39ed3c@s13g2000prd.googlegroups.com...
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then
If IsNumeric(Me.CurrencyRate.Value) = False Then
MsgBox "Data must be a number !" & Chr(13), vbInformation,
"Error"
Cancel = True
End If
End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque
sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur
de ma chambre et rien n'y fait).... :-)
..... Qu'est-ce que je fais de faux ?
essaie Private Sub Nom_KeyPress(KeyAscii As Integer) If Not IsNumeric(Chr(KeyAscii)) Then MsgBox "erreur" KeyAscii = 0 End If
End Sub
-- Pierre SALAUN MVP Access *******************************************************
a écrit dans le message de news:
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then If IsNumeric(Me.CurrencyRate.Value) = False Then MsgBox "Data must be a number !" & Chr(13), vbInformation, "Error" Cancel = True End If End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur de ma chambre et rien n'y fait).... :-) ..... Qu'est-ce que je fais de faux ?
Merci pour vos réponses. A bientôt.
Michel_D
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then If IsNumeric(Me.CurrencyRate.Value) = False Then MsgBox "Data must be a number !" & Chr(13), vbInformation, "Error" Cancel = True End If End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur de ma chambre et rien n'y fait).... :-) ..... Qu'est-ce que je fais de faux ?
Rien, mais il y a des chances que la propriété text n'ai pas bougé, tu peux aussi regarder du coté de la méthode undo ou aussi utiliser l'événement change, tu as l'embarras du choix.
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then
If IsNumeric(Me.CurrencyRate.Value) = False Then
MsgBox "Data must be a number !" & Chr(13), vbInformation,
"Error"
Cancel = True
End If
End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque
sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur
de ma chambre et rien n'y fait).... :-)
..... Qu'est-ce que je fais de faux ?
Rien, mais il y a des chances que la propriété text n'ai pas bougé,
tu peux aussi regarder du coté de la méthode undo ou aussi utiliser
l'événement change, tu as l'embarras du choix.
alors j'ai fait comme vous me l'avez conseillé comme ci-dessous :
Private Sub CurrencyRate_BeforeUpdate(Cancel As Integer)
If Me.CurrencyRate.Value <> "" Or IsNull(Me.CurrencyRate) = False Then If IsNumeric(Me.CurrencyRate.Value) = False Then MsgBox "Data must be a number !" & Chr(13), vbInformation, "Error" Cancel = True End If End If
End Sub
mais le message Access apparaît toujours => alors j'ai rajouté
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Response = acDataErrContinue
End Sub
ben c'est pire, si une lettre est introduite dans le champ, ça bloque sans faire apparaître aucun des messages !
J'ai mis le Cancel = True partout (je l'ai même inscrit contre le mur de ma chambre et rien n'y fait).... :-) ..... Qu'est-ce que je fais de faux ?
Rien, mais il y a des chances que la propriété text n'ai pas bougé, tu peux aussi regarder du coté de la méthode undo ou aussi utiliser l'événement change, tu as l'embarras du choix.
domivax
Merci pour vos réponses,
la réponse de Pierre m'arrange parce qu'elle fonctionne, l'idée de valider les données champs par champs ne me plaisaìt pas beaucoup départ mais en y réfléchissant bien, effectivement c'est plus pro de valider un champ après l'autre. Je pense qu'à la longue ça force à l'utilisateur de saisir des données correctes du premier coup.
Encore merci. Bonne soirée. Xavier
ahh au fait, les gars, ça m'oblige à revoir tous mes formulaires :-(
Merci pour vos réponses,
la réponse de Pierre m'arrange parce qu'elle fonctionne, l'idée de
valider les données champs par champs ne me plaisaìt pas beaucoup
départ mais en y réfléchissant bien, effectivement c'est plus pro de
valider un champ après l'autre. Je pense qu'à la longue ça force à
l'utilisateur de saisir des données correctes du premier coup.
Encore merci.
Bonne soirée.
Xavier
ahh au fait, les gars, ça m'oblige à revoir tous mes formulaires :-(
la réponse de Pierre m'arrange parce qu'elle fonctionne, l'idée de valider les données champs par champs ne me plaisaìt pas beaucoup départ mais en y réfléchissant bien, effectivement c'est plus pro de valider un champ après l'autre. Je pense qu'à la longue ça force à l'utilisateur de saisir des données correctes du premier coup.
Encore merci. Bonne soirée. Xavier
ahh au fait, les gars, ça m'oblige à revoir tous mes formulaires :-(