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

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,

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

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