Recherche un mail téléphone et nom prénom dans un texte

Bonjour le forum,

Je vous lance un petit problème que j'essaie de résoudre actuellement :

J'ai une colonne Excel qui contient les information suivantes des clients : Nom prénom mail et téléphone.

Je souhaite donc reprendre la colonne pou faire une colonne "nom prénom" une autre "téléphone" et une troisième "Mail"

Je veux donc savoir s'il y a une solution vba ou excel qui cherche dans le texte et quand elle détecte "@" par exemple elle copie le mail et le met dans la colonne "Mail".

Vous verrez un exemple de ce que je souhaite faire dans le fichier joint.

Cordialement et Merci d'avance à vous !

20exemple.xlsx (8.30 Ko)

Bonjour,

sur base de ton exemple

P.

27exemple-5.xlsm (15.85 Ko)

Bonjour,

Un résultat à étudier.

On effectue une requête Power Query (natif Excel 2016) sur des données mises sous forme de tableau.

A te relire avec plus d'explications de ta part sur tes vraies données.

Cdlt.

16exemple-2.xlsx (23.82 Ko)

Bonjour Patrick et Jean-Eric,

Je vous remercie pour votre réactivité, Bon en faite mes données n'ont pas toujours la même forme ( je n'ai pas toujour le téléphone en deuxième ligne et le mail en troisième ligne ).

L'idée que j'ai en tête est de détecter le mail dans le texte ( grâce à l'"@" peut être) ensuite il detecte le ou les numéros de téléphone et finalement le nom et prénom (pour cette dernière je n'ai pas d'idées pour la solution)

Je vous met un fichier avec à quoi ressemble mes données exactement (j'ai changé les nom et téléphone pour la confidentialité )

je vous met aussi un code vba qui permet de detecter le mail dans le texte :

Sub ExtractEmail()
'Update 20130829
Dim WorkRng As Range
Dim arr As Variant
Dim CharList As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
arr = WorkRng.Value
CheckStr = "[A-Za-z0-9._-]"
For i = 1 To UBound(arr, 1)
    For j = 1 To UBound(arr, 2)
        extractStr = arr(i, j)
        outStr = ""
        Index = 1
        Do While True
            Index1 = VBA.InStr(Index, extractStr, "@")
            getStr = ""
            If Index1 > 0 Then
                For p = Index1 - 1 To 1 Step -1
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = Mid(extractStr, p, 1) & getStr
                    Else
                        Exit For
                    End If
                Next
                getStr = getStr & "@"
                For p = Index1 + 1 To Len(extractStr)
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = getStr & Mid(extractStr, p, 1)
                    Else
                        Exit For
                    End If
                Next
                Index = Index1 + 1
                If outStr = "" Then
                    outStr = getStr
                Else
                    outStr = outStr & Chr(10) & getStr
                End If
            Else
                Exit Do
            End If
        Loop
        arr(i, j) = outStr
    Next
Next
WorkRng.Value = arr
End Sub

Merci

Bonjour,

Je trouve personnellement un peu..exaspérant de montrer un tel fichier exemple et au final un différent

Tu aurais pû mettre directement toutes les possibilités

En passant quand tu mets un code ici, il faut le placer entre les balises < /> Merci

P.

Bonjour,

Peux-on savoir d'où proviennent les données?

Sinon, cela ne m'inspire pas...

Cdlt.

Bonjour,

Peux-on savoir d'où proviennent les données?

Sinon, cela ne m'inspire pas...

Cdlt.

Bonjour,

Je suis dans une entreprise qui fait de l'assemblage des moteurs de voiture.

Les données sont ceux de nos fournisseurs. nous souhaitons travailler avec une trame Excel bien définie. avant on avait les données de tous les fournisseurs (qualité) dans une seule colonne. maintenant nous souhaitons faire plus clair avec un Excel qui illustre les données de façon plus claire.

Cordialement

Re,

Tu crées un formulaire type de renseignements et tu demandes à tes fournisseurs de respecter ce format.

Il n'y a plus de soucis. Qui est le client?

Cdlt.

Re,

Tu crées un formulaire type de renseignements et tu demandes à tes fournisseurs de respecter ce format.

Il n'y a plus de soucis. Qui est le client?

Cdlt.

En effet c'est la société mère qui impose de travailler sur ce format pour un meilleur échange entre les différents sites en Europe. Dans un premier temps je travaille sur les informations des fournisseurs. après je la généralise sur les clients.

Désolé si j'étais pas clair au début c'est parce que je ne voulais pas vous faire perdre dans les détails.

J'ai une petite question concernant votre code VBA ( sachant que je suis débutant) :

'Option Explicit
Sub Couper()
Dim a(1 To 100, 1 To 4)
Dim Tableau
For Z = 12 To 31
   Tableau = Split(Cells(Z, 2), Chr(10))
   For i = 0 To UBound(Tableau)
      a(Z, 1) = Tableau(0)
      a(Z, 2) = Tableau(1)
      a(Z, 3) = a(Z, 2) & Chr(10) & Tableau(2)
      a(Z, 4) = Tableau(3)
   Next i
Next Z
[D1].Resize(UBound(a), 4) = a
End Sub

dans la collone a (Z,3) pourquoi vous affecter a(Z,2) & Chr(10) & tableau(2) au lieu de mettre a(Z,3) = Tableau(2) ?

Crdlt

Bonjour,

dans la collone a (Z,3) pourquoi vous affecter a(Z,2) & Chr(10) & tableau(2) au lieu de mettre a(Z,3) = Tableau(2) ?

Pour mettre les 2 numéros de tel dans la même cellule, mais je pense qu'il serait plus approprié de les mettre dans des cellules différentes bien sûr

Le souci est que en utilisant split, on obtient par 10 données parfois 3 avec ou sans le poste de la personne , avec 1 ou 2 n°...

Je vais tenter de regarder encore à ça mais Jean-Eric a trouvé une solution peut être plus facile avec Power Query mais je n'ai pas regardé de ce côté

P.

Bonjour,

Merci à vous deux pour vos solution. Actuellement je travaille avec le code VBA. ça marche pas mal sauf quand je met mes 400 ligne ça beug ( je pense une cellule non conforme).

Par contre j'ai jeté un oeuil sur les code query vu que j'y connais pas grand chose mais ça semble une bonne solution sauf que je ntrouve pas le code pour comprendre. y a t il un code ou comment ça marche le power query ?

Merci d'avance

crdlt

Bonjour

modification de la macro de Patrick

en plus cours

A voir

A+

Maurice

6exemple-5.xlsm (16.28 Ko)

Bonjour,

dans la collone a (Z,3) pourquoi vous affecter a(Z,2) & Chr(10) & tableau(2) au lieu de mettre a(Z,3) = Tableau(2) ?

Pour mettre les 2 numéros de tel dans la même cellule, mais je pense qu'il serait plus approprié de les mettre dans des cellules différentes bien sûr

Le souci est que en utilisant split, on obtient par 10 données parfois 3 avec ou sans le poste de la personne , avec 1 ou 2 n°...

Je vais tenter de regarder encore à ça mais Jean-Eric a trouvé une solution peut être plus facile avec Power Query mais je n'ai pas regardé de ce côté

P.

Merci Patrick pour ta réponse. J'ai encore une petite question le chr(10) veut dire un saute de ligne ?

Bonjour,

OUI

Rechercher des sujets similaires à "recherche mail telephone nom prenom texte"