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)