Microsoft 365 Contrôler le format d'une adresse mail

  • Initiateur de la discussion Initiateur de la discussion Habi
  • Date de début Date de début
  • Mots-clés Mots-clés
    email

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 !

Habi

XLDnaute Nouveau
Bonjour,
Je souhaiterai mettre en place un contrôle des adresses mails dans mon fichier. Quelque chose de simple qui indique à l'utilisateur de ressaisir l'adresse mail si elle n'est pas conforme aux standards (identité ou pseudo + @ + domaine). Je vous joint mon fichier o^j'ai inscrit quelques adresses mail en colonne H dont certaine avec des fautes de frappe. Merci de votre aide.
 

Pièces jointes

Bonjour Habi,

Bonjour,
Je souhaiterai mettre en place un contrôle des adresses mails dans mon fichier. Quelque chose de simple qui indique à l'utilisateur de ressaisir l'adresse mail si elle n'est pas conforme aux standards (identité ou pseudo + @ + domaine). Je vous joint mon fichier o^j'ai inscrit quelques adresses mail en colonne H dont certaine avec des fautes de frappe. Merci de votre aide.
Avec ce code
VB:
Function IsValidEmail(sEmailAddress As String) As Boolean
    'Code from Officetricks
    'Define variables
    Dim sEmailPattern As String
    Dim oRegEx As Object
    Dim bReturn As Boolean
   
    'Use the below regular expressions
    sEmailPattern = "^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$" 'or
    sEmailPattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"
   
    'Create Regular Expression Object
    Set oRegEx = CreateObject("VBScript.RegExp")
    oRegEx.Global = True
    oRegEx.IgnoreCase = True
    oRegEx.Pattern = sEmailPattern
    bReturn = False
   
    'Check if Email match regex pattern
    If oRegEx.Test(sEmailAddress) Then
        'Debug.Print "Valid Email ('" & sEmailAddress & "')"
        bReturn = True
    Else
        'Debug.Print "Invalid Email('" & sEmailAddress & "')"
        bReturn = False
    End If

    'Return validation result
    IsValidEmail = bReturn
End Function

Source : http://www.vbaexpress.com/kb/getarticle.php?kb_id=281

Et dans la feuille ou sont saisies les adresses mail
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  ' Vérifier si saisie d'une adresse mail dans la colonne H
  If Not Intersect(Range("H:H"), Target) Is Nothing Then
    If IsValidEmail(Target.Value) = False Then
      Application.EnableEvents = False
      Target.ClearContents
      Application.EnableEvents = True
      MsgBox "Merci de saisir une adresse mail valide SVP", vbCritical, "OUPS..."
    End If
  End If
End Sub

A+
 
Dernière édition:
Formidable ! Merci beaucoup wDog66
Malheureusement je crains que mes connaissance en Macros et VBA ne soient trop limitées pour pouvoir avoir l'usage de tes superbes codes ...
Serais-tu m'assister dans la mise en place ?

Merci​

 
Bonsoir à tous,

Mission impossible en réalité avec une expression régulière si l'on veut coller parfaitement au normes.

Tentative d'amélioration de la proposition de Jean-Eric
VB:
=REGEX.TEST(H2:H10;"^([\w_\-\.]+)@[\w\-]+(\.[\w\-]+)*(\.[a-z]{2,64})$")

\w : pour accepter les accents (si c'est possible)
{2,64} : pour accepter des domaines comme .info, .online, .store (j'ai eu un tel domaine il y a de nombreuses années et quelle de galère ça été avec le rejet des domaines de plus de 3 lettres !!!)
 
- 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

Retour