Verifier si l'adresse email est valide

Bonjour

Je suis entrain de réaliser un userform sur lequel l'utilisateur doit saisir certaines informations

par exemple email, j'aimerai bien faire une condition ou code permettant d'informer l'utilisateur qu'il doit saisir un email valide, et non pas uniquement un msgbox car il peut cliquer sur OK et continuer sans réctifier son email.

j'ai cherché sur internet et j'ai trouvé ce code mais avec ce code il faut absolument par le champ email en premier sinon l'erreur va toujours apparaître

'securité email
Private Sub txtemail_exit(ByVal Cancel As MSForms.ReturnBoolean)
With CreateObject("vbscript.regexp")
.Pattern = "^[\w-\.]+@[\w-]+\.+[A-Za-z]{2,4}$"
If .test(txtemail.Value) Then

Else
MsgBox "adresse email non valide"
Cancel = True

End If
End With

End Sub

Merci d'avance

Bonjour,

Essai d'utiliser ce cocktail (qui me convient très bien) :

Private Sub txtemail_Change()
TbxMail = LCase(TbxMail)
TbxMail = Replace(txtemail, ";", ".")
TbxMail = Replace(txtemail, "é", "e")
TbxMail = Replace(txtemail, "è", "e")
End Sub

Private Sub txtemail_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo GESTERRMAIL
y = ValidEmail(txtemail) Or txtemail = ""
   If Not y Then
      MsgBox "Email invalide"
      Cancel = True
   End If
   Exit Sub
GESTERRMAIL:
End Sub

Function ValidEmail(eMail As String) As Boolean
 Dim MyRegExp As RegExp
 Dim myMatches As MatchCollection
 Set MyRegExp = New RegExp
 MyRegExp.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,4}$"
 MyRegExp.IgnoreCase = True
 MyRegExp.Global = False
 Set myMatches = MyRegExp.Execute(eMail)
 ValidEmail = (myMatches.Count = 1)
 Set myMatches = Nothing
 Set MyRegExp = Nothing
End Function

+ Dans les Références de VBA activer (Cocher) "Microsoft VBScript Regular Expression 5.5"

Nota : il existe des noms de domaines à + de 4 caractères (jusqu'à 24 !)

A+

Merci beaucou pour ton aide, j'aimerai bien savoir s'il y a un code plus facile que celui ci ? car certains passages du code je ne les ai pas compris, surtout la fonction validemail

Bonjour,

Essai d'utiliser ce cocktail (qui me convient très bien) :

Private Sub txtemail_Change()
TbxMail = LCase(TbxMail)
TbxMail = Replace(txtemail, ";", ".")
TbxMail = Replace(txtemail, "é", "e")
TbxMail = Replace(txtemail, "è", "e")
End Sub

Private Sub txtemail_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo GESTERRMAIL
y = ValidEmail(txtemail) Or txtemail = ""
   If Not y Then
      MsgBox "Email invalide"
      Cancel = True
   End If
   Exit Sub
GESTERRMAIL:
End Sub

Function ValidEmail(eMail As String) As Boolean
 Dim MyRegExp As RegExp
 Dim myMatches As MatchCollection
 Set MyRegExp = New RegExp
 MyRegExp.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,4}$"
 MyRegExp.IgnoreCase = True
 MyRegExp.Global = False
 Set myMatches = MyRegExp.Execute(eMail)
 ValidEmail = (myMatches.Count = 1)
 Set myMatches = Nothing
 Set MyRegExp = Nothing
End Function

+ Dans les Références de VBA activer (Cocher) "Microsoft VBScript Regular Expression 5.5"

Nota : il existe des noms de domaines à + de 4 caractères (jusqu'à 24 !)

A+

Merci beaucoup pour ton aide, j'aimerai bien savoir s'il y a un code plus facile que celui ci ? car certains passages du code je ne les ai pas compris, comme

Dim myMatches As MatchCollection

MyRegExp.Global = False

Set myMatches = MyRegExp.Execute(eMail)

ValidEmail = (myMatches.Count = 1)

Rechercher des sujets similaires à "verifier adresse email valide"