Plusieurs conditions arrayformula subtitute

Bonjour,

Mes commerciaux m'envoient des mails de ce type :

RS: TESLA

SIRET: 31034634100046

SIREN: 310346341

TEL: 0133110022

MAIL: elon@tesla.com

NOM: Elon Musk

Sur mon google sheet : https://docs.google.com/spreadsheets/d/1rW34MbmqbX42j273TOJ8W09bO3zvQGlBqOZ_z7G3LuI/edit#gid=0 j'ai trouvé le moyen de séparer les différents éléments avec la formule suivante :

=arrayformula(SUBSTITUE(split(A2;CAR(10));B1:G1;""))

Cependant il reste un "espace" avant les informations en B2:G2 comment l'enlever ?

Mes commerciaux ne sachant pas envoyer un mail et respecter un processus correctement, ils m'envoient également parfois les mails sous cette forme :

RS:TESLA

SIRET:31034634100046

SIREN:310346341

TEL:0133110022

MAIL:elon@tesla.com

NOM:Elon Musk

C'est à dire qu'ils ne mettent pas d'espace après le caractère " : "

Et parfois encore, ils m'envoient des mails sous cette forme :

RS;TESLA

SIRET;31034634100046

SIREN;310346341

TEL;0133110022

MAIL;elon@tesla.com

NOM;Elon Musk

C'est à dire qu'au lieu des " : " ils mettent le caractère " ; " et toujours sans espace.

Ma demande est donc :

Adapter la formule en B2 pour que lorsque je fais un copier coller manuel du mail en A2, ces 3 formes soient pris en compte c'est à dire :

  • Les deux points avec espace
  • Les deux points sans espace
  • Le point virgule sans espace

Merci pour votre aide.

Bonjour,

trim() aurait dû fonctionner, mais en fait l'espace n'était pas un espace simple (32) mais un blanc insécable (160)

on peut résoudre comme ceci

=arrayformula(SUBSTITUTE(split(SUBSTITUTE(SUBSTITUTE(A2;":"&char(160);":");": ";"");CHAR(10));B1:G1;""))

Salut !

Alors effectivement ça le résoud partiellement quand je colle le mail avec " : " avec espace et " : " sans espace, par contre lorsque je colle le mail avec les point virgule, il semblerait que cela ne fonctionne pas

peux-tu me donner un exemple avec les points-virgule ?

on peut aussi utiliser les expressions régulières, à voir

Et parfois encore, ils m'envoient des mails sous cette forme :

RS;TESLA

SIRET;31034634100046

SIREN;310346341

TEL;0133110022

MAIL;elon@tesla.com

NOM;Elon Musk

C'est très difficile de tout faire d'un coup.

Proposition pour tenir compte des différents cas de figure : :, ;, espace, espace insécable (présents ou non)

faire d'abord un split

=split(A2;CHAR(10))

et ensuite une extraction avec cette expression régulière

=REGEXEXTRACT(B2;"^["&I$1&CHAR(160)&"|:; ]{"&LEN(I$1)&",}"&"([\w@ ]+)")

à tirer à droite

Voir en Feuille 2

C'est parfait !

Même en deux fois, je n'ai qu'à masquer les colonnes inutiles !

Merci infiniment !

D'ailleurs, je pense que ce n'est que la première étape d'un plus gros projet d'automatisation sur lequel je bosse, je pense que je vais pas mal soliciter le forum dans les prochains jours / prochaines semaines !

Par contre j'ai remarqué une petite coquille, dans la colonne M, il ne prend pas le mail entièrement, il y a t-il un moyen de régler cela ?

Merci beaucoup

Il fallait en effet ajouter le point dans les caractères valides

=REGEXEXTRACT(B2;"^["&I$1&CHAR(160)&"|:; ]{"&LEN(I$1)&",}"&"([\w@ .]+)")

les caractères valides se trouvent entre les crochets qui sont entre les parenthèses de l'expression régulière

([\w@ .]+)

tout le reste ( ce qui précède ) est inutile de conserver

Super ! Ça semble marcher sur les exemples fournis !

J'ai fait un test de copier / coller de plusieurs mails, cela marche parfaitement lorsque les intitulés exacts sont mis dans l'odre c'est à dire RS en premier SIRET en deuxieme, SIREN en troisieme, TEL en quatrieme, MAIL en cinquieme et NOM en dernier.

Il semblerait que parfois, les commerciaux n'envoient pas toujours les informartions dans l'ordre et il se pourrait que ce genre de chose arrive :

RS : TESLA

SIRET : 52245628400028

SIREN : 522456284

Nom Prénom : ELON MUSK

Mail : elon@tesla.com

Tel : 0611332233

Dans ce cas ci dessous, le Nom n'est plus en dernier mais en 4e position et l'intitulé n'est plus simplement "NOM" mais "Nom Prénom" (et en plus parfois en minuscule) ... d'autres situation où le numéro de teléphone peut être aussi avant le mail etc ... ce qui est sûr c'est que les 3 premières lignes : RS / SIRET et SIREN ne bougeront jamais mais les 3 dernières lignes quant à elles peuvent être dans un ordre aléatoire.

Je sais que ça devient de plus en plus complexe et que dans un monde idéal ce sont les commerciaux qui doivent suivent un process précis afin que j'adapte mes automatisations et que je ne dois pas m'adapter à leurs imprécisions mais pour l'instant c'est leur façon de travailler et je dois faire avec.

Je précise qu'il ne faudrait pas que les informations de I1:N1 ne bougent, c'est à dire que même si dans le copier/coller le nom est en 3e position, il faudrait qu'il puisse rester en colonne N dans la retranscription.

Merci beaucoup.

Il semblerait que parfois, les commerciaux n'envoient pas toujours les informartions dans l'ordre et il se pourrait que ce genre de chose arrive :

en fait, je m'y attendais et j'allais y travailler, avec en prime la suppression des colonnes additionnelles ... donc patience, ça va venir (sauf si je rencontre un point dur)

On peut faire ceci en B2 (voir Feuille 3)

=REGEXEXTRACT($A2;".*"&B$1&"["&CHAR(160)&":; ]{1,2}"&"([\w@ .]+)")

ce qui signifie

.* : n'importe quoi

suivi du mot en ligne 1

suivi de 1 ou 2 caractères parmi : ; espace et espace insécable

puis on prend alors (entre parenthèses) tout ce qui est (entre crochets) alphanumérique @ espace et point

et dans ce cas l'ordre importe peu.

Mes commerciaux ne sachant pas envoyer un mail et respecter un processus correctement

pourquoi tu ne leur fais pas un formulaire google form ?

Merci beaucoup je vais jeter un coup d'oeil.

Le soucis c'est que le commerciaux ne savent déjà pas envoyé un mail correctement, ils ne vont jamais prendre le temps de remplir un Google Form. Ils sont souvent sur le terrain, dans leurs voitures, enchainent des rendez-vous et n'ont pas le temps de remplir des tableaux ou formulaires, ils envoient des mails un peu "à l'arrache" ... Mais c'est vrai qu'avec un google form ça serait plus simple. Pour l'instant je fais comme ça, j'attends notre prochaine réunion pour les recadrer et leur dire qu'il y aura un process carré à respecter pour les prochaines fois.

Après un coup d'oeil, ça va dans la bonne direction !

Toutefois, un essai en ligne 5 avec les intitulé qui ne sont pas entièrement en majuscule, cela ne semble pas fonctionner.

C'est vrai qu'en français on met un espace avant les deux points, donc on passe à 3 caractères possibles

=REGEXEXTRACT($A2;".*"&B$1&"["&CHAR(160)&":; ]{1,3}"&"([\w@ .]+)")

ou carrément tout sauf un caractère alphanumérique, c'est encore plus simple

=REGEXEXTRACT($A2;".*"&B$1&"\W+([\w@ .]+)")

reste le problème des majuscules ce qui va re-allonger la formule à coup sûr

A condition qu'il y ait toujours une majuscule

=iferror(REGEXEXTRACT($A2;".*"&B$1&"\W+([\w@ .]+)");REGEXEXTRACT($A2;".*"&proper(B$1)&"\W+([\w@ .]+)"))

maintenant si on ajoute des accents ou pas ...


je reviens dans ce cas à la solution de google form qui est d'une simplicité enfantine ... fais un essai avec https://docs.google.com/forms/d/e/1FAIpQLSe3rfcCZsV1bJsfcgJpsDj7s1Amx4Kf-HbYO0DNKZBQonBMkw/viewform et regarde le résultat dans ta feuille

Coucou,

Super, ça avance ... Par contre il semblerait qu'en ligne 5 le nom et le mail soit inversé ... possibilité de trouver une solution pour la formule, qu'elle soit rallongée ou complexifié n'est pas un problème en soit.

Je sais qu'un Google Form serait le plus simple ... mais encore une fois, pour l'instant je vais fonctionner comme ça.

il semblerait qu'en ligne 5 le nom et le mail soit inversé ...

parce que dans le texte d'origine c'est inversé !

image

Ah oui ... 🤦🏻‍♀️

Rechercher des sujets similaires à "conditions arrayformula subtitute"