Calc : Comment faire pour vérifier l’adresse mail par macro – openoffice partie 2

Suite de Calc : Vérifier l’adresse mail par macro – partie 1, dans laquelle avions vérifié la présence d’espace dans l’adresse.

Ici, nous ajoutons les deux traitements de vérification manquants à savoir vérifier que :

  • le dernier point de l’adresse est suivi d’au moins 2 caractères
  • le signe @ doit être précédé d’au moins 3 caractères et suivi d’au moins 3 caractères.

Pour ce faire, nous allons parcourir chaque caractère composant l’adresse e-mail et déterminer les positions des éléments intéressants pour les vérifications (la position de l’arobase et celle du dernier point).

Code de la fonction de parcours des caractères

Function verification(adresse)
   dim point as integer ' position du point
   dim arobe as integer ' position de l arobase
   dim caractere as string
   dim compteur as integer
   point = arobe = 0
   compteur=1
   ' boucle : sur chaque caracteres de l adresse
   do while compteur<=len(adresse)
      caractere = mid(adresse, compteur, 1)
      if caractere="." then
         point=compteur
      elseif caractere="@" then
         arobe=compteur
      end if
      compteur = compteur + 1
   loop
   ' appel des fonctions qui contiennent
   ' les "contraintes" de vérification
   if verifPoint(adresse,point)and verifArobe(adresse,arobe) then
      verification = true
   else
      verification=false
   end if
end Function

A la fin de cette fonction, nous appelons les fonctions qui permettent de vérifier précisément si les règles de vérification établies sont respectées.

Si les deux règles sont respectées, la fonction « verification » retournera la valeur « true ». Elle retournera « false » dans le cas contraire.

Code de vérification : règles prédéfinies

La fonction suivante vérifie si la position du point est supérieure à 7 ce qui équivaut à vérifier que le point se trouve au moins après une chaîne d’au minimum 7 caractères.

Elle vérifie également que le point se place au moins 2 caractères avant la fin de la chaîne « adresse ».

function verifPoint(adresse,point)
   if point >7 and len(adresse)-point >=2 then
      verifPoint= true
   end if
end function

Ici, la fonction vérifie que le signe @ se trouve au moins à la 4ème position dans la chaine « adresse » et que le « bloc » représentant 3 caractères + signe @ + 3 caractères fait bien 7 caractères au total.

function verifArobe(adresse,arobe)
   if arobe<3 then exit function
   if len( mid(adresse, arobe-3, 7))<7 then exit function
   verifArobe= true
end function

Où placer l’appel du contrôle

L’appel à la fonction verification(…) peut se faire directement dans la fonction lit(…), combiné au test précédent (contient un espace).

Cela donne :

if contientEspace(valeur) or not verification(valeur) then
   ....
enf if

Conclusion

Ces différentes vérifications sont faites de manières très détaillés et à considérer comme une approche de la programmation open office basic. En effet, par cet exemple, nous avons pu voir plusieurs notions fondamentales comme l’utilisation de fonctions et passage de paramètres, de boucles itératives

L’ensemble des vérifications effectuées ne garantie pas totalement la validité de l’adresse mail : la présence de caractères spéciaux, la taille maximale autorisée et d’autres possibilités ne sont pas traitées (par ex, une adresse « @@@@@@@@@.tata.toto » est valide ici ! Il faudrait ajouter une règle « ne contient qu’un seul @ ».


Je reste disponible si un point particulier nécessitait plus de précision dans ce cas, envoyez moi un message.

Si vous remarquez une anomalie, n’hésitez pas à m’en faire part.

Autres tutoriels Open Office Calc : mise en forme conditionnelle, envoyer un mail par macro

Le prochain tuto sera de réaliser la même opération de vérification d’adresse email en utilisant les expressions rationnelles.