Je n'arrive pas à valider une adresse email saisie dans un champs Access
Résolu
traderpierre
Messages postés
291
Date d'inscription
Statut
Membre
Dernière intervention
-
RV71 Messages postés 656 Date d'inscription Statut Membre Dernière intervention -
RV71 Messages postés 656 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Je n'arrive pas à valider une adresse email saisie dans un champs Access
- Ethernet n'a pas de configuration ip valide - Guide
- Darkino nouvelle adresse - Guide
- Comment saisir une adresse url - Guide
- Adresse mac - Guide
- Comment creer un compte email - Guide
4 réponses
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+
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+
J'y suis arrivé avec d'autres fonctions complète que j'ai trouvé sur le web, le problème est maintenant résolu
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
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