Isoler e-mail fichier excel destructuré

Fermé
guiguiz - 26 févr. 2015 à 12:01
 guiguiz - 26 févr. 2015 à 15:15
Bonjour,

J'ai un fichier comprenant plusieurs informations sur des entreprises disposées dans un CRM. Lors de l'export (CSV possible uniquement, j'utilise Streak avec Gmail), les données sont mal structurées. En effet certaines colonnes comprennent des chiffres, des emails, des commentaires etc et on ne retrouve plus du tout la même structure que dans le CRM. Bref tout est dans le désordre et je me retrouve avec un ficher inexploitable.

J'aimerais pouvoir au moins isoler toutes les cellules comprenant le @ (afin de shooter un e-mailing), puis copier toutes ces cellules dans une nouvelle feuille. Le problème est qu'excel ne propose pas ce type de fonctions (si c'est le cas lesquelles ?) et je ne vois pas trop comment faire si ce n'est manuellement, ce qui n'est pas vraiment envisageable !

Ensuite, si ça marche j'aimerais pouvoir faire de même avec chaque colonne du fichier.

Pour info le fichier comprend environ 600 lignes et 25 colonnes.

Merci !!

A voir également:

2 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
26 févr. 2015 à 12:25
Bonjour
sur 600 lignes, c'est jouble avec une formule si on est dans un fichier Excel ou fonctionnant avec le même type de formule, et si vous êtes sur de n'avoir qu'une seule adresse mail dans chaque ligne

par exemple en colonne AB en commençant en ligne 1:

=INDEX(A1:Z1;;EQUIV("*@*";A1:Z1;0)

vous ressortira en colonne AB le texte qui contient @ quelque soit sa position entre A et Z
(attention aux ;)

crdlmnt
0
Merci pour votre réponse.

Je ne suis pas sur de savoir dans quelle cellule taper la formule =INDEX(A1:Z1;;EQUIV("*@*";A1:Z1;0) sachant qu'elle en supprimera le contenu... Pouvez-vous me dire ou la rentrer ?

Du coup ce que vous me conseiller marcher, il faudra le faire pour toutes les lignes du fichier ?
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 26/02/2015 à 12:57
en colonne AB (comme indiqué dans mon message), mais dans tous les cas:
A1:Z1 doit couvrir l'ensemble des colonnes de votre tableau
la formule doit se situer dans une colonne en dehors du champ
les adresses mail trouvées s'afficheront dans cette colonne
(je suis parti de vos infos, à savoir que 25 colonnes vont de A à Y et donc en AB, ça devrait fonctionner)
crdlmnt
0
Bonjour j'ai raccourci le fichier aux elements essentiels. Je me retrouve donc avec des colonnes allant de A à L. Comme je disais il y avait environ 600 entreprises dans le CRM. Lors de l'export CSV puis la conversion en excel je me retrouve avec près de 2776 lignes dont certaines sont vides... Par ailleurs certaines cellule sont totalement vides et certaines valeurs qui devaient être dans leur colonne se retrouvent dans d'autres. Exemple: email dans la colonne Site web, des commentaires (sur la qualité du prospect) dans une colonne Nom et d'autres infos dans des colonnes qui n'ont rien à voir. Que me conseillez-vous du coup ?Quand j'ai essayé d'adopter votre formule Excel n'a pas compris la manoeuvre et rien ne s'est produit (j'ai surement du me tromper..)
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
26 févr. 2015 à 13:42
voila ce que ça devrait donner en colonne M (sur 30 lignes)
https://www.cjoint.com/c/EBAn1qCMcRm
crdlmnt
0
C'est génial merci !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 févr. 2015 à 13:09
Bonjour
pour vérifier une syntaxe correcte d'una adresse mail
Private Function verifier_syntaxe_mel(mel As String) As Boolean
Dim reg As Object
Dim verif As Object

Set reg = CreateObject("vbscript.regexp")
reg.Global = False
'admet les majuscules
reg.IgnoreCase = True

reg.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$"
Set verif = reg.Execute(mel)
verifier_syntaxe_mel = (verif.Count = 1)

Set verif = Nothing
Set reg = Nothing
End Function

0