Valider les adresses e-mail, Excel VBA

Valider les adresses e-mail, Excel VBA

Voici une explication détaillée du code VBA pour valider les adresses e-mail dans Excel.
Objectif :
L’objectif est de créer une macro VBA qui valide les adresses e-mail en fonction des règles courantes telles que :

  • La présence du symbole « @ ».
  • Un nom de domaine correct.
  • Une structure correcte (partie locale, symbole @, partie domaine).

Ce script permettra de vérifier si une adresse e-mail dans une cellule donnée est valide.
Étapes :
1. Ouvrez Excel et appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
2. Dans l’éditeur, allez dans Insertion → Module pour créer un nouveau module.
3. Copiez et collez le code VBA suivant dans le module.
4. Ensuite, vous pourrez appeler cette fonction à partir d’une feuille Excel pour valider les adresses e-mail.
Code VBA pour la validation d’adresses e-mail :

Function ValidateEmailAddress(ByVal email As String) As String
    ' Déclaration des variables
    Dim regex As Object
    Dim isValid As Boolean
    Dim resultMessage As String
    ' Création de l'objet expression régulière
    Set regex = CreateObject("VBScript.RegExp")
    ' Modèle d'expression régulière pour valider l'e-mail
    ' Ce modèle garantit :
    ' - Au moins un caractère avant le symbole @
    ' - Un seul symbole @
    ' - Au moins un caractère après le symbole @ (nom de domaine)
    ' - Un point (.) dans le nom de domaine (pour séparer le domaine du domaine de premier niveau)
    ' - Au moins deux caractères dans le domaine de premier niveau (ex : .com, .org)
    regex.IgnoreCase = True
    regex.Global = True
    regex.Pattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
    ' Teste l'adresse e-mail avec l'expression régulière
    If regex.Test(email) Then
        ' Si valide, renvoie un message de succès
        resultMessage = "Adresse e-mail valide"
    Else
        ' Si invalide, renvoie un message d'erreur
        resultMessage = "Adresse e-mail invalide"
    End If
    ' Renvoie le message de résultat
    ValidateEmailAddress = resultMessage
End Function

Explication du Code :
1. Déclaration de la fonction :

  • La fonction ValidateEmailAddress prend un seul argument email (l’adresse e-mail à valider) et renvoie une chaîne de caractères indiquant si l’e-mail est valide ou non.
  • Le résultat renvoyé sera soit « Adresse e-mail valide » soit « Adresse e-mail invalide ».

2. Création de l’objet expression régulière :

  • On utilise l’objet VBScript.RegExp pour appliquer une expression régulière (regex). Les expressions régulières sont des modèles qui permettent de rechercher et de valider des chaînes de texte de manière flexible. Ici, on les utilise pour valider la structure de l’adresse e-mail.
  • regex.IgnoreCase = True rend l’expression insensible à la casse (majuscule/minuscule).
  • regex.Global = True permet de rechercher dans toute la chaîne.

3. Modèle d’expression régulière : Le modèle utilisé pour valider l’adresse e-mail est :
"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"

    • ^[a-zA-Z0-9._%+-]+ :
      • ^ indique le début de la chaîne.
      • [a-zA-Z0-9._%+-] correspond à n’importe quel caractère alphanumérique, ainsi que les caractères ., _, %, +, et -.
      • + signifie « un ou plusieurs » des caractères précédents.
    • @ : C’est le symbole @, qui doit impérativement apparaître dans l’adresse e-mail.
    • [a-zA-Z0-9.-]+ :
      • Cela correspond à la partie du domaine de l’e-mail (après le @), qui peut contenir des caractères alphanumériques, des points (.), et des tirets (-).
      • + signifie « un ou plusieurs » de ces caractères.
    • \. : Cela correspond à un point littéral (.) qui sépare le nom de domaine du domaine de premier niveau (par exemple, .com).
    • [a-zA-Z]{2,}$ :
      • Cela correspond au domaine de premier niveau, qui doit contenir au moins deux caractères et seulement des caractères alphabétiques (ex : .com, .org).
      • $ indique la fin de la chaîne.

4. Test de l’e-mail :

  • La méthode regex.Test(email) vérifie si l’adresse e-mail correspond au modèle de l’expression régulière.
  • Si l’adresse e-mail correspond au modèle, la fonction renvoie « Adresse e-mail valide ». Sinon, elle renvoie « Adresse e-mail invalide ».

5. Renvoi du résultat :

  • La fonction renvoie le message approprié qui indique si l’adresse e-mail est valide ou non.

Comment utiliser la fonction dans Excel :
1. Après avoir ajouté le code VBA, fermez l’éditeur en appuyant sur Alt + Q.
2. Dans n’importe quelle cellule de votre feuille Excel, vous pouvez maintenant utiliser la fonction ValidateEmailAddress comme n’importe quelle fonction Excel classique.
Par exemple, si vous avez une adresse e-mail dans la cellule A1, vous pouvez utiliser la formule suivante pour la valider :
=ValidateEmailAddress(A1)
Cette formule renverra soit « Adresse e-mail valide » soit « Adresse e-mail invalide » selon que l’adresse e-mail correspond au modèle de l’expression régulière.
Améliorations possibles :

  • Validation avancée : Ce script vérifie uniquement la structure de base de l’adresse e-mail. Si vous souhaitez effectuer une validation plus avancée (par exemple, vérifier si le domaine existe réellement), vous devrez utiliser des méthodes supplémentaires comme une recherche DNS, ce qui est plus complexe et dépasse les capacités des expressions régulières.
  • E-mail vide : Si vous souhaitez gérer les cellules vides ou les valeurs nulles, vous pouvez modifier le code pour renvoyer un message comme « Veuillez entrer une adresse e-mail » si l’entrée est vide.

Conclusion :
Ce code VBA permet de valider la structure d’une adresse e-mail en utilisant des expressions régulières, en vérifiant qu’elle respecte un format avec une partie locale, un symbole @, un nom de domaine et un domaine de premier niveau. C’est une méthode simple et efficace pour effectuer une validation rapide des adresses e-mail dans Excel.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x