controler un format d'adresse email

Le
Jean-Claude
Bonjour,

j'ai un fichier Excel contenant une liste d'adresses email et je cherche un
moyen simple pour vérifier que ce sont bien des formats d'adresses email, du
genre yyy@zzz.ttt.
Je peux :
- passer sur chaque cellule, F2, ENTREE : si l'adresse est ok, elle est
soulignée et mise en bleu
=> simple mais un peu long, pour une liste de plusieurs centaines d'items
- faire une macro :
=> rapide mais peu pratique, comme je dois le faire en prise de mains sur
d'autres postes, il faudrait que je transferts la macro, l'intégre au
fichier, l'exécute

Une autres solution, du style une formule ? Une mise en forme conditionnelle
?

Par avance, merci.

Jean-Claude
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Claude
Le #23035741
Oups, pardon, j'oubliais :
sous Excel 2003 et/ou 2000 (ben oui....)
Jean-Claude
DanielCo
Le #23036611
- faire une macro :
=> rapide mais peu pratique, comme je dois le faire en prise de mains sur
d'autres postes, il faudrait que je transferts la macro, l'intégre au
fichier, l'exécute...



Bonjour,
C'est à ma connaissance le seul moyen. Tu n'es pas oblligé de mettre la
macro dans chaque classeur. Il suffit de l'exécuter sur la feuille
active, à partir d'un
classeur en réseau ou d'un classeur résidant sur une clé USB, par
exemple.
Cordialement.
Daniel
michdenis
Le #23038691
Bonjour,

Voici une façon de faire :

Tu dois ajouter la bibliothèque suivante à ton projetVBA
Pour ce faire, dans la fenêtre de l'éditeur de code,
Barre des menus / outils / références / tu coches l'item suivant :
"Microsoft VBScript Regular Expression 5.5"

Dans un module standard, tu copies ce qui suit
en adaptant le nom de la feuille et l'adresse de la plage.
Dans la colonne à droite de celle indiquée s'affichera Vrai ou Faux
selon que l'adresse a un format correspondant à un courriel ou pas.
'----------------------------------------
Sub test()
dim C as Range
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
For Each c In .Cells
c.Offset(, 1).Value = ValidEmail(c.Value)
Next
End With
End With
End Sub

'----------------------------------------
Private 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,3}$"
MyRegExp.IgnoreCase = True
MyRegExp.Global = False
Set myMatches = MyRegExp.Execute(eMail)
ValidEmail = (myMatches.Count = 1)
Set myMatches = Nothing
Set MyRegExp = Nothing
End Function
'----------------------------------------


MichD
--------------------------------------------
"Jean-Claude" a écrit dans le message de groupe de discussion : 4d372836$0$5407$

Bonjour,

j'ai un fichier Excel contenant une liste d'adresses email et je cherche un
moyen simple pour vérifier que ce sont bien des formats d'adresses email, du
genre
Je peux :
- passer sur chaque cellule, F2, ENTREE : si l'adresse est ok, elle est
soulignée et mise en bleu
=> simple mais un peu long, pour une liste de plusieurs centaines d'items
- faire une macro :
=> rapide mais peu pratique, comme je dois le faire en prise de mains sur
d'autres postes, il faudrait que je transferts la macro, l'intégre au
fichier, l'exécute...

Une autres solution, du style une formule ? Une mise en forme conditionnelle
?

Par avance, merci.

Jean-Claude
Jean-Claude
Le #23038741
"michdenis" iha0c6$i57$
Bonjour,

Voici une façon de faire :




Merci pour la macro détaillée, mais je n'en demandais pas tant ! J'en avais
une sous la main :-)
Je cherchais une solution autre que la macro ou la validation de chaque
cellule, mais ca ne semble donc pas exister...
Merci pour vos réponses...
Jean-Claude
michdenis
Le #23038811
| mais je n'en demandais pas tant ! J'en avais une sous la main :-)

Mais comme tu avais la main dessus, je ne pouvais pas la voir. ;-)



MichD
--------------------------------------------
"Jean-Claude" a écrit dans le message de groupe de discussion : 4d388983$0$7720$


"michdenis" iha0c6$i57$
Bonjour,

Voici une façon de faire :




Merci pour la macro détaillée, mais je n'en demandais pas tant ! J'en avais
une sous la main :-)
Je cherchais une solution autre que la macro ou la validation de chaque
cellule, mais ca ne semble donc pas exister...
Merci pour vos réponses...
Jean-Claude
michdenis
Le #23038801
En passant, tu pourrais utiliser la fonction directement
dans une cellule de la feuille de calcul :
en supposant que A1 contient une adresse de courriel
=ValidEmail(A1)

MichD
--------------------------------------------
Jean-Claude
Le #23039651
"michdenis" iha2gu$nhg$
En passant, tu pourrais utiliser la fonction directement
dans une cellule de la feuille de calcul :
en supposant que A1 contient une adresse de courriel
=ValidEmail(A1)

MichD
--------------------------------------------



C'est en effet une façon de procéder à laquelle je ne pense jamais...
Mais dans mon cas, j'ai opté pour une macro qui valide les cellules de la
sélection :

Public Sub ConrolEMail()
Dim regEx As RegExp, occurrences As MatchCollection
For Each c In Selection
Set regEx = New RegExp
regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}.[a-z]{2,3}$"
regEx.IgnoreCase = True
regEx.Global = False
Set occurrences = regEx.Execute(c.Value)
If occurrences.Count <> 1 Then
c.Font.ColorIndex = 3
End If
Next
End Sub

JC
Jacquouille
Le #23045131
Bonjour Denis
J'ai tenté (en cachette, rien que pour moi), une MEFC sur la présence de
l'arobase (@).
Je croyais y arriver en la faisant précéder d'un tilde (~)....hélàs, rien
n'y fit.
ce qui fait que j'en suis tout déconfit...-)
<< Si la valeur de la cellule = *"~@"* soit : n'importe quel car, @,
n'importe quel car ..... marche pô. -(

--
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"michdenis" discussion : iha2gu$nhg$
En passant, tu pourrais utiliser la fonction directement
dans une cellule de la feuille de calcul :
en supposant que A1 contient une adresse de courriel
=ValidEmail(A1)

MichD
--------------------------------------------
michdenis
Le #23045811
Bonjour,

Tu peux utiliser cette fonction dans un module standard en prenant
soin d'ajouter la bibliothèque énoncée à la première ligne de la fonction.

Tu sélectionnes la plage de cellules,
et dans ta mise en forme conditionnelle, utilises la formule : =ValidEmail($C1)
en supposant que tes adresses de courriel débutent en C1 jusqu'à Cx


'----------------------------------
Private Function ValidEmail(eMail As Range) As Boolean
'"Microsoft VBScript Regular Expression 5.5"
Dim MyRegExp As RegExp
Dim myMatches As MatchCollection
Set MyRegExp = New RegExp
MyRegExp.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}.[a-z]{2,3}$"
MyRegExp.IgnoreCase = True
MyRegExp.Global = False
Set myMatches = MyRegExp.Execute(eMail)
ValidEmail = (myMatches.Count = 1)
Set myMatches = Nothing
Set MyRegExp = Nothing
End Function
'----------------------------------



MichD
--------------------------------------------
"Jacquouille" a écrit dans le message de groupe de discussion : 4d3c179b$0$14255$

Bonjour Denis
J'ai tenté (en cachette, rien que pour moi), une MEFC sur la présence de
l'arobase (@).
Je croyais y arriver en la faisant précéder d'un tilde (~)....hélàs, rien
n'y fit.
ce qui fait que j'en suis tout déconfit...-)
<< Si la valeur de la cellule = *"~@"* soit : n'importe quel car, @,
n'importe quel car ..... marche pô. -(

--
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"michdenis" discussion : iha2gu$nhg$
En passant, tu pourrais utiliser la fonction directement
dans une cellule de la feuille de calcul :
en supposant que A1 contient une adresse de courriel
=ValidEmail(A1)

MichD
--------------------------------------------
Publicité
Poster une réponse
Anonyme