Verifier adresse email

Signaler
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
-
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
-
bonjour
j'ecris ce prg, pour verifier l'adresse email est ce qu'il contient vide et @,mais il ne fonctionne pas,

vb souligne  la ligne suivant  entier
TextBox1.setfocus()

et la deuxième ligne souligne sur Boolean
Private

Sub ValidEmail()
As
Boolean

veuillez m'aidez s'il vous plaît
Public

Class Form1

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

Dim ValidEmail
As
String

If ValidEmail =
True
ThenMsgBox(

"le format de votre adress email est valide")

ElseMsgBox(

"le format de votre adresse email n'est pas valide")TextBox1.setfocus()

End
If

End
SubEnd

Class

Private

Sub ValidEmail()
As
Boolean

Dim strMail
As
String

Dim var
As
StringstrMail = Trim(TextBox1.text)

TextBox1.Text = strMail

If strMail =
""
ThenMsgBox =

"aucune address email n'est valide"

Exit
Sub

End
If

If
Not InStr(1, StrMail,
"@") <> 0
ThenMsgBox =

"le caracter @doit ˆtre prŠsent dans l'adresse email"

Exit
Sub

End
IfEnd

Sub

23 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
"ne fonctionne pas" n'est pas un symptome...
tu pourrais etre plus précis ?

ta sub est Private et déclarée en dehors de la Classe form
c'est inutile et faux, puisqu'elle n'est pas indépendante (fais référence à TextBox1).
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
ah oui, et pense a supprimer la reference 'Microsoft Viaual Basic' de ton projet, là, tu code un mix entre VB6 et .Net
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
en vrai .Net

Option Explicit On
Option Strict On

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ValideMail(TextBox1.Text) Then
MessageBox.Show("le format de votre adresse email est valide")
Else
MessageBox.Show("le format de votre adresse email n'est pas valide")
End If
End Sub
End Class

Module Module1
Public Function ValideMail(ByRef vsMail As String) As Boolean
If vsMail.IndexOf("@") > 0 Then
ValideMail = True
End If
End Function
End Module



j'ajouterais que la présence d'un '@' ne garantie nullement une adresse valide, mais ca dépasse le cadre de ta demande
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
1
Salut Domxaline !

Voilà, tu ne m'en voudras pas, mais j'ai nettoyer un peu ce code...






- L'IDE te soulignait "TextBox1.Setfocus()" car cette fonction n'existe pas:




  = > Il fallait utiliser la fonction " TextBox1.Focus() "






- L'IDE te soulignait également "Private Sub ValidEmail() As Boolean" car
une procédure (Sub) ne renvoie pas
  de valeur. Tu ne peux donc pas lui donner
un type (Ici As Boolean). Seules les fonctions renvoient une valeur.




  => Donc soit tu en fais une procédure: Private Sub ValidEmail()




  = > Soit tu en fais une fonction:  Private Function ValidEmail() As Boolean






- Avec le code que tu avais posté, plusieurs MessageBox étaient appelées en cas
d'adresse invalide...




  En gros tu gérais les erreurs dans la méthode ValidEmail() mais également dans
ton évènement Button1_Click()
  suivant la valeur de retour de ValidEmail().
A mon avis, tu devrais rassembler cela au même endroit comme ici...




  J'ai choisi de le faire dans ValidEmail() mais tu peux le faire dans Button1_Click()...






Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles Button1.Click

        If ValidEmail() Then
            '[Ton code si True]
        Else
            TextBox1.Focus()
        End If

    End Sub

    Private Function ValidEmail() As Boolean
        TextBox1.Text  = TextBox1.Text.Trim()
        If TextBox1.Text = "" Then MessageBox.Show("Veuillez entrer une adresse eMail") :  Return False
        If Not TextBox1.Text.Contains("@"c) Then MessageBox.Show("Le caracter @ doit être présent dans l'adresse eMail") :  Return False
        MessageBox.Show("Adresse eMail valide")
        Return True
    End Function

End Class

'===============================================================================
' Sinon je te propose une autre manière de tester la validité de l'adresse eMail
' Celle-ci est plus puissante que ta méthode.
' Elle teste si "@" est présent, la présence du domaine, bref tout en une fois...

Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles Button1.Click

        If IsMailValide(TextBox1.text) Then
            '[Ton code si True]
        Else
            MessageBox.Show("Adresse eMail invalide")
            TextBox1.Focus()
        End If

    End Sub

    Private Function IsMailValide(ByVal mailAddress$) As Boolean
        Dim pattern$ = _
        "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)" & _
        "|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
        Return Regex.IsMatch(mailAddress, pattern, RegexOptions.IgnoreCase)
    End Function

End Class

Voilà, en espèrant que cela t'aide un peu...
Bonne continuation !
++
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
merci beaucoup pour votre reponse,ça marche
peut tu m'expliquer cette ligne s'il te plaît

pattern$ = _
        "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)" & _
        "|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
        Return Regex.IsMatch(mailAddress, pattern, RegexOptions.IgnoreCase)

merci beaucoup encore une fois
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
salut
j'essayais ton prg, ValidEmail est souligné
en mettant curseur sur la ligne, il m'indique
 'Private Function ValidEmail() As Boolean' n'a aucun paramètre et son type de retour ne peut pas être indexé. 

merci beaucoup
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
concernant ta demande d'explication, il me semble utile de t'indiquer la doc:

http://msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.regex.ismatch.aspx
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
merci beaucoup
je vais jeter un coup d'oeil
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
1
Re !

Alors... Comme tu peux t'en douter avec l'import qui est fait (

System.Text.RegularExpressions)


, il s'agit d'une expression régulière. En faite, c'est un peu comme la recherche de correspondances avec des "wildcards" (caractères génériques du genre * qui correspond à TOUT et nimporte quoi ou ? qui correspond à UN caractère) mais en beaucoup plus puissant ! Du coup ici, le pattern définit la composition (séquence) que doit avoir l'adresse pour être considérée comme valide. Cela implique de définir les caractères autorisés, l'ordre... La fonction ,

IsMatch() renvoie une valeur booléenne indiquant si le paramètre



"mailAddress" correspond bien à la forme définie par le paramètre "pattern"


et le dernier paramètre indique de ne pas tenir compte de la casse... (On l'aurait presque deviné, non?)




Private Function IsMailValide(ByVal mailAddress$) As Boolean
    Dim pattern$ = _
    "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)" & _
    "|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
    Return Regex.IsMatch(mailAddress, pattern, RegexOptions.IgnoreCase)
End Function



Pour plus d'infos, va voir le lien que t'a donné Renfield, mais aussi (Pour les créer) :
http://lgmorand.developpez.com/dotnet/regex/
http://fr.wikipedia.org/wiki/Expression_rationnelle
http://www.expreg.com/

Bonne prog !
++
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
1
Juste une petite précision...

Tu dis avoir

"Private Function ValidEmail() As Boolean' n'a aucun paramètre et son type de retour ne peut pas être indexé."







Je ne vois pas trop où est le soucis... Attention tout de même, dans mon 2ème exemple, la fonction "IsMailValide" (celle avec l'expression régulière) requière un paramètre (l'adresse à tester, pour toi TextBox1.text). Donc pour l'appeler fait bien comme dans mon exemple...

++
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
sturtrid, le prg que tu m'a donné marche bien ,nickel et je compris pourRegex.IsMatch
 
j'ai pb avec le prg du  Renfield

merci d'avance
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Quel est ton problème avec le code du Renfield ?
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
 If

ValidEmail(TextBox1.Text)
ThenValidEmail est souligné
en mettant le curseur sur la ligne, il m'indique
 'Private Function ValidEmail() As Boolean' n'a aucun paramètre et son type de retour ne peut pas être indexé.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
ValidEmail() ?

euh, tu n'as pas :

Public Function ValideMail(ByRef vsMail As String) As Boolean
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
oui je les ai ,
regarde ces lignes


Module




Module1



Public





Function

ValideMail(


ByRef

vsMail


As





String

)


As





Boolean
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
1
Re salut Domxaline !

Là j'me marre: "j'ai pb avec le prg du Renfield"...
Et là, j'me marre encore plus: "Quel est ton problème avec le code du Renfield ?"...!

Un peu d'écologie... En effet, "Le Renfield" est une espèce très rare. Il est à noter que son biotope est très spécifique. Il possède un régime alimentaire varié semblable à son cousin humain dont il révèle les caractéristiques dominantes par un mécanisme d'héritage complexe...

Bref, je connais pas assez "Le Renfield" pour m'abstenir de préciser qu'il s'agit là d'une pointe d'humour... Ceci étant ses conseils sont toujours très appréciés et généralement d'une grande aide !

Pour info son code est tout à fait correct. Comme il te le fait judicieusement remarquer, l'erreur que tu rencontres vient du fait que tu as omis de déclarer le paramètre dans la fonction MailValide alors que tu appelles cette même fonction avec un paramètre...

++
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
si je me trompe pas
le parametre du ValidEmail est TextBox1.Text n'est pas?
il faut que j'ecris
If

ValidEmail(TextBox1.Text)


Then

et je changais comme suivant :

Private
Sub Button3_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button3.Click

If ValidEmail(TextBox1.Text)
ThenMessageBox.Show(

"le format de votre adresse email est valide")

ElseMessageBox.Show(

"le format de votre adresse email n'est pas valide")

End
If

End
SubEnd

ClassModule

Module1

Public
Function ValideMail(
ByRef TextBox1.Text,
As
String)
As
Boolean

If TextBox1.IndexOf(
"@") > 0
ThenValideMail =

True

End
If

End
FunctionEnd

Module

maintenant toujours soulingé ValidEmail

dans le section function
Public
Function ValideMail(
ByRef TextBox1.Text,
As
String)
As
Boolean

et aussi souligné  Text,As String

pour le Text : Virgule ou ')' attendue.
pour le As :   Mot clé non valide en tant qu'identificateur. 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
le parametre est un String, non un Textbox.

faire, donc :

PublicFunction ValideMail(ByRef vsAdresseATester As String) As Boolean
If vsAdresseATester.Contains("@") Then
ValideMail =

True
EndIf
EndFunction
End
Messages postés
327
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
10 mai 2012
1
j'ecris comme suivant
Private

Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

Dim vsAdresseATester
As
String

If ValideMail(vsAdresseATester)
ThenMessageBox.Show(

"le format de votre adresse email est valide")

ElseMessageBox.Show(

"le format de votre adresse email n'est pas valide")

End
If

End
SubEnd

ClassModule

Module1

Public
Function ValideMail(
ByRef vsAdresseATester
As
String)
As
Boolean

If vsAdresseATester.Contains(
"@")
ThenValideMail =

True

End
If

End
FunctionEnd

Modulemaintenant
dans la ligne suivante
If ValideMail(vsAdresseATester)
Then

(vsAdresseATester) souligné
en amenant curseur sur la ligne, il m'indique
la variable vsAdresseATester est passé par ref avant qu'une valeur n'est lui a été assigné

 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
tu as simplement supprimé la reference a ton TextBox1, qui doit etre faite dans le Click, et non dans IsValideMail :

Dim vsAdresseATester AsString
If ValideMail(vsAdresseATester) Then

à remplacer par :

If ValideMail(TextBox1.Text) Then