Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA: vérifier validité email (saisie dans TextBox)

  • Initiateur de la discussion Initiateur de la discussion Staple1600
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Staple1600

XLDnaute Barbatruc
Bonne nuit le forum


Je suis bloqué ici
Code:
Private Sub CommandButton1_Click(
If InStr(TextBox1, "@") = 0 Or _
InStr(TextBox1, ".") = 0 Or _
Len(TextBox1) < 7 Then
MsgBox "L'adresse email saisie n'est pas valide",vbCritical,"Erreur"
End If
End Sub

Ce code fonctionne si l'adresse est du type "nom@domaine.com"
mais ne gère pas les saisies du type

"toto@rr@toto.fr"
"t..tot@to..fr"

et ne tiens pas compte des caractères interdits.

J'ai également tente cette voie
Code:
If Not TextBox1 Like "*@*.**" _
Or Not TextBox1 Like "*@*.***" _
Or TextBox1 Like "*[/]*" Then MsgBox " email invalide"
'ca m'embete de lister tous les caratcères interdits
' de cette façon

Qui aurait une piste (ou une solution clé en mains)?

Merci et bonne nuit
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Salut Staple et le forum

As-tu tester la version sur Excelabo ?

Ce lien n'existe plus

Tu vas devoir travailler un peu pour adapter 🙂
Mytå
 
Dernière modification par un modérateur:
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonjour le forum, Myta


J'ai suivi ton lien

mais je n'ai pas vu de code pour vérifier une adresse email
j'ai vu un code qui vérifie la validité des URL (de sites)


Je voulais essayer de trouver en réfléchissant un peu
(je n'ai pas eu la patience... j'ai cherché sur le net)

J'étais pas trop loin de la solution (enfin celle avec Like)
Code:
Private Sub CommandButton1_Click()
'macro originale: chip pearson
'source:microsoft.public.excel.misc
'mot-clé: email validation
If Len(TextBox1) - Len(Replace(TextBox1, "@", "")) = 1 And _
Len(TextBox1) - Len(Replace(TextBox1, ".", "")) = 1 Then
   If TextBox1 Like "?*@?*.?*" Then
        Debug.Print "OK"
   Else
       MsgBox "L'adresse mail saisie est invalide"
    End If
Else
    MsgBox "L'adresse mail saisie est invalide"
    TextBox1 = vbNullString
End If
End Sub

Ca avance
Code:
Sub verifmail()
Dim s As String
Dim chaine As String
s = "[EMAIL="prenomnom@domaine.fr"]prenomnom@domaine.fr[/EMAIL]"
chaine = "*[/\*-+&|<>(){}:!£$¤%ùéèàµ,?;]*"
If Len(s) - Len(Replace(s, "@", "")) = 1 And _
Len(s) - Len(Replace(s, ".", "")) = 1 And Not s Like chaine Then
If s Like "?*@?*.?*" Then
MsgBox "Adresse email valide"
Else
MsgBox "L'adresse mail saisie est invalide"
End If
Else
MsgBox "L'adresse mail saisie est invalide"
 
End If
End Sub
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonsoir


Apres avoir difficilement lu :La RFC 2822 [arobase.org]

pour connaitre la norme d'un email

Je ne suis pas sur de la forme valide d'un email

Est-ce que les emails suivant sont valides?

"prenom.compose.nom@domaine.com"

"monsieur.prenom.nom@domaine.com"

Qui peut me renseigner, svp?

PS: je sais qu'on peut peut utiliser RegEx
pour vérifier l'email
mais préfère ne pas l'utiliser pour le moment
(cf. comment etre sur Microsoft VBScript Regular Expression 5.5 est
coché sur le poste de l'utilisateur final)
 
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonsoir Staple, Myta

Ci joint proposition de fonction avec la technique des expressions rationnelles

edit: oups! pas lu ton dernier paragraphe mais il y a une technique pour éviter de cocher les regexp avec create object; je verrai ca demain si ca t'intéresse (peut-^tre chez Sigonneau, va voir)

quand à la syntaxe, je pense qu'on peut mettre plusieurs points: jamais vu mais il y a aucune raison car dans la 1° partie le point est un caractère comme un autre (il est m^me facultatif)
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonsoir Staple1600, Mytå, michel_m, le Forum,

Sujet très intéressant ! 🙂

Je m'essaye à la chose d'une façon un peu plus "classique".
Code:
[SIZE=2][COLOR=NAVY]Sub[/COLOR] Test()
    MsgBox IIf(VerifMail("mon_email@serveur.com"), "Adresse OK", "Adresse refusée")
[COLOR=NAVY]End Sub[/COLOR]


[COLOR=NAVY]Function[/COLOR] VerifMail([COLOR=NAVY]ByVal[/COLOR] adrEmail [COLOR=NAVY]As String[/COLOR]) [COLOR=NAVY]As Boolean[/COLOR]
[COLOR=GREEN]'myDearFriend! - www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] T [COLOR=NAVY]As String
Dim[/COLOR] C [COLOR=NAVY]As Byte[/COLOR]
    T = UCase(adrEmail)
    [COLOR=NAVY]If[/COLOR] Len(Replace(T, Chr(64), "")) <> Len(T) - 1 [COLOR=NAVY]Then Exit Function
    For[/COLOR] C = 45 [COLOR=NAVY]To[/COLOR] 95
        [COLOR=NAVY]Select Case[/COLOR] C
        [COLOR=NAVY]Case[/COLOR] 45 [COLOR=NAVY]To[/COLOR] 46, 48 [COLOR=NAVY]To[/COLOR] 57, 64 [COLOR=NAVY]To[/COLOR] 90, 95
            T = Replace(T, Chr(C), "")
            [COLOR=NAVY]If[/COLOR] Len(T) = 0 [COLOR=NAVY]Then Exit For
        End Select
    Next[/COLOR] C
    [COLOR=NAVY]If[/COLOR] Len(T) = 0 [COLOR=NAVY]Then
        If[/COLOR] adrEmail [COLOR=NAVY]Like[/COLOR] "?*@??*.??*" [COLOR=NAVY]Then[/COLOR] VerifMail = [COLOR=NAVY]True
    End If
End Function[/COLOR][/SIZE]
Cordialement,
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonsoir à tous les vérificateurs d'email et au forum

Je vous joint une petite compils

de fonction de validation d'email

glanées sur le net (dont les votres)

A tester sans modération.

PS: certaines fonctions nécéssitent Microsoft VBScript Regular Expression 5.5 (à cocher donc)

Si quelqu'un à la soluce pour "cocher" cela dans
WorkBook_Open

Merci à tous pour vos contributions

edit: j'ai mis une nouvelle version
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonsoir à tous,
Si quelqu'un à la soluce pour "cocher" cela dans
WorkBook_Open
Essaie :
Code:
Private Sub WorkBook_Open()
[COLOR=Green] '***Ajoute la référence Microsoft VBScript Regular Expression 5.5[/COLOR]
Dim X As String
X = "C:\WINDOWS\System32\vbscript.dll\3"
ThisWorkbook.VBProject.References.AddFromFile X
End Sub
Si le chemin d'accès est le même que sur ma machine.

Cordialement
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonsoir (plutot bonne nuit) Spitnolan08

Merci pour l'info

M'en vais tester cela de suite

Ca fonctionne, reste la question suivante
Tester la version de l'OS pour prévenir l'utilisateur
En étant perfectioniste 😱
Indiquer le lien pour télécharger WHS
Ouvrir le navigateur par défaut sur ce lien
Tant que j' y suis 😱
Télécharger le fichier et l'installer en mode silencieux
Fermer le classeur puis reboot de Windows
et réouvrir le classeur
tout ca depuis VBA 😀
Code:
Private Sub WorkBook_Open()
[COLOR=Green] '***Ajoute la référence Microsoft VBScript Regular Expression 5.5[/COLOR]
Dim X As String
'Pour PC sous Windows 98 SE
X = "C:\WINDOWS\SYSTEM\vbscript.dll\3"
ThisWorkbook.VBProject.References.AddFromFile X
End Sub
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonjour Staple, Myta, Spit, Didier et tout le monde

Effectivement, comme le dit Didier, il y a bien longtemps qu'il y avait eu une discussion collaborative intéressante sur XLD!

J'ai récupéré la manière d'utiliser les regexp sans avoir à cocher la référence 5.5
en fait, ca a l'air tout simple:
Code:
Private Function verifier_syntaxe_mel(mel As String) As Boolean
     Dim reg as object
     Dim verif As Object
     
     Set Reg = CreateObject("vbscript.regexp")
     Reg.Global = False
     'admet les majuscules
     Reg.IgnoreCase = True
     
     Reg.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$"
     Set verif = Reg.Execute(mel)
     verifier_syntaxe_mel = (verif.Count = 1)
     
     Set verif = Nothing
     Set Reg = Nothing
   End Function

Amicalement
 
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonjour à tous
edit: j'ai reposté la compils (avec vos codes) pour ceux qui n'auraient pas vu mon précédent edit
C'est rare que je me cite moi-même

->Michel m: Dans le fichier joint dans mon précédent message
j'ai un peu modifié ton code (Est-ce profitable VBAistiquement parlant?)

On peut donc utiliser RegEx sur n'importe quel PC? (sans références cochées?)

Si Windows Script Host 5.6 n'est pas installé ou mis à jour? ca ne fonctionne pas non?

Si l'OS va de W98SE à Vista en passant par W2K et XP
VBA ne bronche toujours pas?

Quelqu'un(e) peut m'aiguiller sur cette méthodologie (qui sent l'usine à gaz)?
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Re

Avant de partir en réunion, un dernier fichier

Voici mes bouts de code dont je parlais précédemment
(cf. internet, WSH 5.6, etc...)

(enfin je n'en suis que l'utilisateur/glaneur)

(Merci aux auteurs respectifs)
 
Dernière édition:
Re : VBA: vérifier validité email (saisie dans TextBox)

Re,

j'utilise au boulot et at home Win Xp et ofice 2000 pro. Sur l'essai que j'ai effectué et posté sur XLD, plus besoin de cocher bien que la proposition de Spit reste valable et peut-être + universele que la mienne.
 
Re : VBA: vérifier validité email (saisie dans TextBox)

Re,
Bonjour Michel,

La proposition que j'ai postée n'est pas universelle en l'état🙁. Elle ne l'est que si on connait le chemin d'accès de sa version Excel. Mais pour la rendre universelle, il "suffit" de lui adjoindre un module de recherche du chemin d'accès à vbscript.dll\3
Ainsi quelle que soit la version d'Excel, sauf si cette référence n'est pas installée, l'activation de Microsoft VBScript Regular Expression 5.5 sera effective. Mais c'est un peu plus long...

Cordialement
 
Re : VBA: vérifier validité email (saisie dans TextBox)

Bonsoir Spitnolan08, Michel m, MyDearFriend!, Myta et le forum (ouf)

Pour le fun, j'essaye de continuer le projet
(Verification OS, download & install WSH)

Des volontaires?

->Spitnolan08
Code:
Private Sub WorkBook_Open()
[COLOR=Green] '***Ajoute la référence Microsoft VBScript Regular Expression 5.5[/COLOR]
'// pour faire un peu de place
ThisWorkbook.VBProject.References.AddFromFile X
End Sub
Si on ouvre une deuxième fois le classeur
ca produit une erreur ("cochage" une deuxième fois)
Problème également : XP : \SYSTEM32, W98 \System
D'ou le test de la version de l'OS

->Michel m: Comment faire si pas de Windows Update effectué sur le PC
(WSH 5.6 pas installé, par exemple)
D'ou mon idée de télécharger à partir d'Excel WSH 5.6
et de l'installer en mode silencieux
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…