Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

controler un format d'adresse email

9 réponses
Avatar
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

9 réponses

Avatar
Jean-Claude
Oups, pardon, j'oubliais :
sous Excel 2003 et/ou 2000 (ben oui....)
Jean-Claude
Avatar
DanielCo
- 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
Avatar
michdenis
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
Avatar
Jean-Claude
"michdenis" a écrit dans le message de news:
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
Avatar
michdenis
| 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" a écrit dans le message de news:
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
Avatar
michdenis
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
--------------------------------------------
Avatar
Jean-Claude
"michdenis" a écrit dans le message de news:
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
Avatar
Jacquouille
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" a écrit dans le message de groupe de
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
--------------------------------------------
Avatar
michdenis
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" a écrit dans le message de groupe de
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
--------------------------------------------