IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Excel validation email


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut Excel validation email
    Bonjour à tous,

    Je dois trier un base de données d'adresse email d'un fichier CSV (suite à un export). la raison est qu'il existe des adresses totalement incohérente.
    J'ai donc ouvert le CSV dans un excel, j'éssaye de faire passer des critères aux adresse email, c'est à dire qu'il y à plusieurs test à passer pour qu'un adresse soit valide.

    Voici un screen du fichier test (mais on parle d'une base de données contenant plusieurs centaines de milliers d'adresse email. (trop fastidieux à faire une à une))

    Nom : email-testeur.jpg
Affichages : 413
Taille : 132,8 Ko
    Comme vous pouvez le constater, j'ai 3 lignes qui ont passés les tests alors qu'il n'aurais pas dû.

    Voici quelque détails :

    Justification d'une adresse très spécial tel que "unémail1280@msn.com"
    En réalité c'est une adresse qui à été taper avec un caractère accentué mais qui au fil des transfert de système n'a pas respecter l'encodage de cractère et à subis de multiple réencodage (me demandé pas pourquoi, ca à merdouiller un moment donné, mais pas de mon fait)
    Quoi qu'il en soit il faut que je puisse isolé ce genre d'adresse pour lui dire qu'elle n'est pas valide, j'espérais au même titre que les accent, lui faire échouer au moins un test pour l'exclure


    Détails des colonnes de test et logique utilisé, il va de soit que le numéro de ligne change à chaque fois

    [@] Test pour vérifier qu'il n'existe qu'un seul caractère @
    SI(NBCAR(A3)-NBCAR(SUBSTITUE(A3;"@";""))=1; "1"; "0")
    Si le nombre de caractère en A3 moins le nombre de caractères auquel on à retiré les @ est égal à 1 alors c'est validé, Sinon = 0

    [. > @] Test pour vérifier qu'il existe au moins un point après l'arobase
    SI(C3="0"; "0"; SI(NBCAR(DROITE(A3; NBCAR(A3)-TROUVE("@";A3))) - NBCAR(SUBSTITUE(DROITE(A3; NBCAR(A3)-TROUVE("@";A3));".";"")) >= 1; 1; 0))
    Si le C3 est égal à 0, Alors ca ne passe pas, sinon si le nombre de . Trouvé après @ est supérieur à 1, ca passe
    Problème que je vois déjà arriver : unemail@.com sera validé
    Après faudrait limiter à 2 point maximum sion je vois les extension à ralonge arrivée lol

    [éèà] Test pour vérifier si il y'a des caractères accentués
    SI(NB.SI(A3;"*[áâäàéèëêíîïìóôöòúûüùÁÂÄÀÉÈËÊÍÎÏÌÓÔÖÒÚÛÜÙ]*")>0; 0; 1)
    Si le nombre de caractères accentué existe sur une base de liste prédinie est supérieur à 0, ca ne passe pas, sinon ca passe
    Sauf que ca ne fonctionne pas…

    [&§!] Test pour vérifié la présence de caractères autre que alphabétique, numérique, et le . - _

    SI(NB.SI(A3;"*[!a-zA-Z0-9._-]*")>0; 0; 1)
    J'ai vue qu'on pouvait utilisé des expression régulière, ce qui aurais régler le problème des accents, mais faut croire que non
    Ca ne fonctionne pas non plus

    [espace] Test pour vérifier la présence d'espace blanc
    SI(NB.SI(A3;" ")>0; "0"; "1")
    Ca ne fonctionne pas non plus

    Il y'a donc le test pour vérifier les caractères accentués, les caractères spéciaux, et les espace blanc qui ne fonctionne pas.
    Pour le reste je suis bon je pense

    Il y'a encore un test que je n'arrive pas à mettre en application, c'est qu'il devrait y avoir un minimum de caractère avant le @, genre minimum 2 mais je vois pas comment le mettre en formule (peut-être la fatigue lol)

    Je pose ca là, si quelqu'un à des piste pour moi, ou peut-être une méthode plus simple pour valider syntaxiquement une adresse en utilisant excel je suis preneur
    Le fichier excel en pièce jointe dans lequel vous retrouvé exactement ce qu'il y'a dans ce message.

    Belle soirée à tous
    Spliffer
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Si tu n'as rien contre un peu de VBA, on peut résoudre ce problème en beaucoup moins d'étapes grâce aux expressions régulières (communément appelées REGEX)

    L'expression régulière permettant de tester si une adresse mail est valide ou non est la suivante : "^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}"

    Pour cela, il te faut ajouter dans le VBE la librairie propre aux expressions régulières :
    Ouvre Visual Basic > Outils > Références > Microsoft VBScript Regular Expressions 5.5

    Nom : Librairie REGEX.png
Affichages : 353
Taille : 27,5 Ko



    Puis tu écris une fonction personnalisée te permettant de tester cette expression régulière :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Function TestRegExp(ByVal Source As String)
     
    Dim Reg As VBScript_RegExp_55.RegExp
    Dim Critère As String
     
        Set Reg = New VBScript_RegExp_55.RegExp
     
        Critère = "^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}"
     
        Reg.Pattern = Critère
        Reg.MultiLine = False
        Reg.IgnoreCase = False
        Reg.Global = True
     
        TestRegExp = Reg.test(Source)
     
        Set Reg = Nothing
     
    End Function
    Et dans ton fichier Excel, tu utilises cette fonction TestRegExp sur les cellules de ton choix.

    Nom : Regex.png
Affichages : 356
Taille : 38,4 Ko


    A noter que tu as écrit "OK" en B14 alors que l'adresse mail n'est pas valide étant donné que c'est une virgule à la fin et non un point. La Regex ne s'y est pas trompé !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut
    Bonjour,

    Merci pour votre réponse

    J'avais déjà essayer cette méthode, mais j'avais toujours des cellule indiquant #VALEUR

    J'ai essayer votre code, et là toutes les cellules indique une erreur #NOM

    J'ai bien activé la références

    Nom : vb_active.jpg
Affichages : 343
Taille : 57,1 Ko

    Et le code VB

    Nom : testReGex.jpg
Affichages : 338
Taille : 266,2 Ko

    Et je ne vois pas comment résoudre cette érreur

    Belle journée à vous
    Spliffer

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 221
    Par défaut
    Hello,
    il faut mettre le code VBA dans un module VBA, pas dans le code d'une feuille.
    Ami calmant, J.P

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Re,

    Ma faute, j'ai oublié de préciser qu'il faut placer le code de la fonction dans un Module

    EDIT : Jurassik Pork plus rapide que moi !

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut
    Ha ben voilà, j'ai insérer un module comme vous m'avez dit et y ai placer le code, ça à régler la chose tout de suite

    Merci à vous pour votre temps

    Je marque le sujet en résolu.
    Encore merci à vous

    Belle journée à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoi "non automatique" d'un doc Excel via email Lotus
    Par marpin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/06/2007, 14h58
  2. [EXCEL] Validation des données saisies - nouvelle Question :-)
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 39
    Dernier message: 29/11/2006, 13h28
  3. [EXCEL] Validation des données et enregistrement
    Par Rixou dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/11/2006, 14h45
  4. [VBA-Excel] Validation d'une fusion de cellule
    Par marsupoilu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/07/2006, 14h26
  5. [Excel] Validation de données
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2005, 19h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo