OVH Cloud OVH Cloud

contrôle syntaxe

7 réponses
Avatar
Daniel METHOT
Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression écrite dans un champ contienne
obligatoirement un caractère donné (Ex: @) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)

7 réponses

Avatar
Eric
re,

Cela fait-il suite au post précédent ?
Si oui, tu peux mettre dans les propriétés du champ champCourriel
en mode création/modification de la table:
Valide si:DansChaîne([champCourriel];"@")>0
Message: Erreur dans le courriel !


Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression
écrite dans un champ contienne obligatoirement un caractère donné (Ex:
@) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
LiR
Bonjour,

Mettre pour la propriété "Valide si" du champ :

Comme "*@*"

Le message d'erreur correspondant est à définir dans la propriété "Message
si erreur" du champ



Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression écrite dans un champ contienne
obligatoirement un caractère donné (Ex: @) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)



Avatar
Argyronet
Bonjour,

Un autre solution, adapté à la saisie elle-même :
Private Sub txtEmail_BeforeUpdate(Cancel As Integer)
Dim strTempEntry As String

strTempEntry = Me!txtEmail.Text
If InStr(strTempEntry, ".") = 0 Or InStr(strTempEntry, "@") = 0 Or
Len(strTempEntry) < 7 Then
MsgBox "Cette adresse Email n'est pas valable !", vbExclamation
Cancel = True
End If
End Sub

A greffer sur le champ lui-même sur l'événement BeforeUpdate()
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression écrite dans un champ contienne
obligatoirement un caractère donné (Ex: @) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)



Avatar
LiR
Je dirais alors qu'il suffit de vérifier :

Like "*?@?*.??*"

Ce qui est encore plus précis et plus simple, non?


Bonjour,

Un autre solution, adapté à la saisie elle-même :
Private Sub txtEmail_BeforeUpdate(Cancel As Integer)
Dim strTempEntry As String

strTempEntry = Me!txtEmail.Text
If InStr(strTempEntry, ".") = 0 Or InStr(strTempEntry, "@") = 0 Or
Len(strTempEntry) < 7 Then
MsgBox "Cette adresse Email n'est pas valable !", vbExclamation
Cancel = True
End If
End Sub

A greffer sur le champ lui-même sur l'événement BeforeUpdate()
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression écrite dans un champ contienne
obligatoirement un caractère donné (Ex: @) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)





Avatar
Argyronet
Oui LIR, je suis entièrement d'accord sur le principe...
Mais entre nous, le message Access renvoyé est tout de même sacrément
barbare par rapport à un MsgBox personnalisé découlant de l'événement de
validation BeforeUpdate et donc adapté aux utilisateurs...
Ta solution est fonctionnelle mais pas conviviale d'un point de vue
ergonomie applicative...
C'est du même acabit que les messages du style :
"L'expression sur chargement entrée comme paramètre de la propriété type
événement est à l'origine d'une erreur... Le résultat de l'expression n'est
pas un nom de macro, le nom d'une fonction définie par l'utilisateur ou
[Event Procedure]. Une erreur a peut-être été commise lors de l'évaluation
d'une fonction, d'un événement ou d'une macro."
Tu crois qu'un utilisateur qui lit ce message est capable d'y comprendre
quelque chose ???

Par principe et par expérience, je n'utilise jamais ces propriétés toutes
faîtes qui sont difficiles à maintenir dans leur ensemble. Mais le demandeur
choisiras...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Je dirais alors qu'il suffit de vérifier :

Like "*?@?*.??*"

Ce qui est encore plus précis et plus simple, non?


Bonjour,

Un autre solution, adapté à la saisie elle-même :
Private Sub txtEmail_BeforeUpdate(Cancel As Integer)
Dim strTempEntry As String

strTempEntry = Me!txtEmail.Text
If InStr(strTempEntry, ".") = 0 Or InStr(strTempEntry, "@") = 0 Or
Len(strTempEntry) < 7 Then
MsgBox "Cette adresse Email n'est pas valable !", vbExclamation
Cancel = True
End If
End Sub

A greffer sur le champ lui-même sur l'événement BeforeUpdate()
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression écrite dans un champ contienne
obligatoirement un caractère donné (Ex: @) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)







Avatar
LiR
Je suis assez d'accord avec toi aussi sur ces histoires de fonctionnalités
toutes faites.
Mais il suffirait ici d'utiliser la propriété "Message Si erreur" et d'y
placer "Cette adresse Email n'est pas valable !"

Je dis juste que le test Like "*?@?*.??*" est plus précis car une adresse
comme suit :

bidon.g@

ou encore

@.sssssss

Est considérée comme valide par ta vérification alors que ce n'est pas une
adresse mail conforme.

Pour la convivialité, il suffit de garder la procédure :

Private Sub txtEmail_BeforeUpdate(Cancel As Integer)
Dim strTempEntry As String

strTempEntry = vbNullString & Me!txtEmail.Text
If not (strTempEntry Like "*?@?*.??*") Then
MsgBox "Cette adresse Email n'est pas valable !", vbExclamation
Cancel = True
Endif

End Sub



Oui LIR, je suis entièrement d'accord sur le principe...
Mais entre nous, le message Access renvoyé est tout de même sacrément
barbare par rapport à un MsgBox personnalisé découlant de l'événement de
validation BeforeUpdate et donc adapté aux utilisateurs...
Ta solution est fonctionnelle mais pas conviviale d'un point de vue
ergonomie applicative...
C'est du même acabit que les messages du style :
"L'expression sur chargement entrée comme paramètre de la propriété type
événement est à l'origine d'une erreur... Le résultat de l'expression n'est
pas un nom de macro, le nom d'une fonction définie par l'utilisateur ou
[Event Procedure]. Une erreur a peut-être été commise lors de l'évaluation
d'une fonction, d'un événement ou d'une macro."
Tu crois qu'un utilisateur qui lit ce message est capable d'y comprendre
quelque chose ???

Par principe et par expérience, je n'utilise jamais ces propriétés toutes
faîtes qui sont difficiles à maintenir dans leur ensemble. Mais le demandeur
choisiras...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Je dirais alors qu'il suffit de vérifier :

Like "*?@?*.??*"

Ce qui est encore plus précis et plus simple, non?


Bonjour,

Un autre solution, adapté à la saisie elle-même :
Private Sub txtEmail_BeforeUpdate(Cancel As Integer)
Dim strTempEntry As String

strTempEntry = Me!txtEmail.Text
If InStr(strTempEntry, ".") = 0 Or InStr(strTempEntry, "@") = 0 Or
Len(strTempEntry) < 7 Then
MsgBox "Cette adresse Email n'est pas valable !", vbExclamation
Cancel = True
End If
End Sub

A greffer sur le champ lui-même sur l'événement BeforeUpdate()
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression écrite dans un champ contienne
obligatoirement un caractère donné (Ex: @) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)









Avatar
Argyronet
Humm, Ok... Mais "Message si erreur" est encore une fonctionnalité toute faîte
Moi, j'aime bien les beaux MsgBox ;o |)
C'est à dire avec un titre et une icône adaptée et surtout le choix des
boutons, voire le contexte d'aide.

Enfin et pour clore le débat ici..., pourquoi ne pas user des Expressions
Régulières ?
Je ne voulais pas aborder le sujet du fait que le demandeur ait précisé
"débutant".
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Je suis assez d'accord avec toi aussi sur ces histoires de fonctionnalités
toutes faites.
Mais il suffirait ici d'utiliser la propriété "Message Si erreur" et d'y
placer "Cette adresse Email n'est pas valable !"

Je dis juste que le test Like "*?@?*.??*" est plus précis car une adresse
comme suit :

bidon.g@

ou encore

@.sssssss

Est considérée comme valide par ta vérification alors que ce n'est pas une
adresse mail conforme.

Pour la convivialité, il suffit de garder la procédure :

Private Sub txtEmail_BeforeUpdate(Cancel As Integer)
Dim strTempEntry As String

strTempEntry = vbNullString & Me!txtEmail.Text
If not (strTempEntry Like "*?@?*.??*") Then
MsgBox "Cette adresse Email n'est pas valable !", vbExclamation
Cancel = True
Endif

End Sub



Oui LIR, je suis entièrement d'accord sur le principe...
Mais entre nous, le message Access renvoyé est tout de même sacrément
barbare par rapport à un MsgBox personnalisé découlant de l'événement de
validation BeforeUpdate et donc adapté aux utilisateurs...
Ta solution est fonctionnelle mais pas conviviale d'un point de vue
ergonomie applicative...
C'est du même acabit que les messages du style :
"L'expression sur chargement entrée comme paramètre de la propriété type
événement est à l'origine d'une erreur... Le résultat de l'expression n'est
pas un nom de macro, le nom d'une fonction définie par l'utilisateur ou
[Event Procedure]. Une erreur a peut-être été commise lors de l'évaluation
d'une fonction, d'un événement ou d'une macro."
Tu crois qu'un utilisateur qui lit ce message est capable d'y comprendre
quelque chose ???

Par principe et par expérience, je n'utilise jamais ces propriétés toutes
faîtes qui sont difficiles à maintenir dans leur ensemble. Mais le demandeur
choisiras...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Je dirais alors qu'il suffit de vérifier :

Like "*?@?*.??*"

Ce qui est encore plus précis et plus simple, non?


Bonjour,

Un autre solution, adapté à la saisie elle-même :
Private Sub txtEmail_BeforeUpdate(Cancel As Integer)
Dim strTempEntry As String

strTempEntry = Me!txtEmail.Text
If InStr(strTempEntry, ".") = 0 Or InStr(strTempEntry, "@") = 0 Or
Len(strTempEntry) < 7 Then
MsgBox "Cette adresse Email n'est pas valable !", vbExclamation
Cancel = True
End If
End Sub

A greffer sur le champ lui-même sur l'événement BeforeUpdate()
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

Comment écrire la condition suivante : Je voudrais que l'expression écrite dans un champ contienne
obligatoirement un caractère donné (Ex: @) sinon je déclenche un message d'erreur ?

Merci

Encore Daniel ... (débutant..)