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

Résolu
traderpierre Messages postés 316 Statut Membre -  
RV71 Messages postés 620 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

4 réponses

  1. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
     
    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
  2. traderpierre Messages postés 316 Statut Membre 7
     
    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
    1. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
       
      Tu aurais pu dire comment du coup...

      Et mettre le sujet comme résolu.

      A+
      0
  3. traderpierre Messages postés 316 Statut Membre 7
     
    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
  4. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
     
    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