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))
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
Partager