Je n'arrive pas à valider une adresse email saisie dans un champs Access

Résolu/Fermé
traderpierre Messages postés 291 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 6 janvier 2024 - 10 mai 2020 à 12:38
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 - 10 mai 2020 à 20:29
J'ai récupéré cette fonction sur le site le grenier access à ce lien
https://grenier.self-access.com/access/visual-basic/valider-la-saisie-dune-adresse-e-mail/

Je placé cette fonction dans un module standard

________________________________________________

Function EmailValide(ByVal strEmail As String) As Boolean
Dim re As VBScript_RegExp_55.RegExp

' On crée une expression rationnelle
Set re = New VBScript_RegExp_55.RegExp

' On définit le critère à respecter pour un e-mail
re.Pattern = "w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*"

' La fonction RegExp.Test renvoie True si l'e-mail respecte
' le critère
EmailValide = re.Test(strEmail)
End Function
_____________________________________________________


Ensuite j'ai placé cet événement avant mise à jour de mon champ Email, comme indiqué sur ce site

___________________________________________

Private Sub Email_BeforeUpdate(Cancel As Integer)

If Not EmailValide(Me.Email) Then
MsgBox "Adresse e-mail incorrecte !", vbExclamation
Cancel = True
End If
End Sub
___________________________________________

Mais j'obtiens toujours ce Warning
Erreur de compilation:
Type défini par l'utilisateur non défini

Pouvez-vous m'aider et me suggérer ce qui ne vas pas ???

Merci par avance
A voir également:

4 réponses

RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
10 mai 2020 à 13:57
Bonjour,

as-tu bien ajouté la référence comme indiqué ?

VBA ne gère pas nativement les expressions rationnelles, vous devez donc ajouter à votre projet une bibliothèque qui le fait :

Démarrez VBE (Visual Basic Editor).
Cliquez sur le menu Outils / Références.
Dans la liste des références, cochez Microsoft VBScript Regular Expressions(5.5, à ce jour).


A+
1
traderpierre Messages postés 291 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 6 janvier 2024 6
Modifié le 10 mai 2020 à 15:28
J'y suis arrivé avec d'autres fonctions complète que j'ai trouvé sur le web, le problème est maintenant résolu
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
10 mai 2020 à 15:29
Tu aurais pu dire comment du coup...

Et mettre le sujet comme résolu.

A+
0
traderpierre Messages postés 291 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 6 janvier 2024 6
10 mai 2020 à 19:59
Voici la solution détaillée point par point :
Access - Vérification et validation d'adresse email saisie dan le champ Email

Placer ce code Fonction dans un module standard
_____________________________________________________

Public Function AdresseEmailValide(ByVal EmailAVerifier As String) As Boolean

'définition des variables et des constantes
Const CaracteresAdmisUtilisateur = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.!#$%&'*+-/=?^_`{|}~"
Const CaracteresAdmisDomaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.-"
Dim NomUtilisateur As String
Dim EmplacementArobase As Integer
Dim Domaine As String

'vérification de l'adresse
EmplacementArobase = InStr(1, EmailAVerifier, "@")
If EmplacementArobase = 0 Then GoTo AdresseIncorrecte
If InStr(EmplacementArobase + 1, EmailAVerifier, "@") > 0 Then GoTo AdresseIncorrecte

NomUtilisateur = Left(EmailAVerifier, EmplacementArobase - 1)
Domaine = Right(EmailAVerifier, Len(EmailAVerifier) - EmplacementArobase)
Suffixe = Right(EmailAVerifier, Len(EmailAVerifier) - InStrRev(EmailAVerifier, "."))

If Left(NomUtilisateur, 1) = "." Or Right(NomUtilisateur, 1) = "." Then GoTo AdresseIncorrecte
If InStr(1, Domaine, ".") = 0 Then GoTo AdresseIncorrecte
If Left(Domaine, 1) = "." Or Right(Domaine, 1) = "." Then GoTo AdresseIncorrecte
If Left(Domaine, 1) = "-" Or Right(Domaine, 1) = "-" Then GoTo AdresseIncorrecte
If Len(Suffixe) < 2 Then GoTo AdresseIncorrecte

For i = 1 To Len(NomUtilisateur)
If InStr(1, CaracteresAdmisUtilisateur, Mid(NomUtilisateur, i, 1)) = 0 Then GoTo AdresseIncorrecte
Next
For i = 1 To Len(Domaine)
If InStr(1, CaracteresAdmisDomaine, Mid(Domaine, i, 1)) = 0 Then GoTo AdresseIncorrecte
Next
For i = 1 To Len(EmailAVerifier)
If Mid(EmailAVerifier, i, 1) = "." And Mid(EmailAVerifier, i + 1, 1) = "." Then GoTo AdresseIncorrecte
Next i

AdresseEmailValide = True
Exit Function

AdresseIncorrecte:
AdresseEmailValide = False
End Function

_____________________________________________________________

Ensuite dans l'évènement après mise à jour du champ Email placer cette vérification avec alerte MsgBox + son Beep d'alerte

_____________________________________________________________

Private Sub Email_AfterUpdate()

AdresseEmail = Me.Email
Verification = AdresseEmailValide(AdresseEmail)

If Verification = False Then
Beep
MsgBox "Cette adresse e-mail n'est pas valide..."
End If

End Sub
0
RV71 Messages postés 610 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 27 novembre 2024 31
10 mai 2020 à 20:29
OK,

mais c'est bien lourd, alors que tu n'avais que qq lignes à écrire avec la bonne référence.

Du moment que ça fonctionne tu me diras....

A+
0