Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 févr. 2009 à 10:36
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
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 26 févr. 2009 à 12:02
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 !
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_domxaline
Messages postés327Date d'inscriptionjeudi 21 août 2008StatutMembreDernière intervention10 mai 20122 26 févr. 2009 à 15:26
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é.
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 26 févr. 2009 à 19:17
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
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 26 févr. 2009 à 19:59
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...
cs_domxaline
Messages postés327Date d'inscriptionjeudi 21 août 2008StatutMembreDernière intervention10 mai 20122 27 févr. 2009 à 10:59
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é.
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 27 févr. 2009 à 14:48
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...
cs_domxaline
Messages postés327Date d'inscriptionjeudi 21 août 2008StatutMembreDernière intervention10 mai 20122 27 févr. 2009 à 16:28
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é