XL 2013 Extraction du numero de téléphone dans une phrase

Tridarius

XLDnaute Nouveau
Bonjour,

J’espère que tout le monde va bien :)
J'ai un petit soucie avec Excel. J'ai regardé plusieurs forums avant de poster ici ma question pour essayer d’éviter d’embêter la communauté. Malheureusement je cale.

J'ai joins un fichier Excel dans le quel j'aimerai essayer d'extraire le numero de téléphone se trouvant dans en A1 et le copier en B1. et ainsi copier cette formule pour quelle fonction sur A2,A3,A4 etc....

Comme vous pouvez le constater, le texte en A1 et tiré d'un code Html donc il y énormément de retour a la ligne. Le numero de téléphone se trouve apres le texte : data-phone="
Je ne suis pas arrivé a trouver une solution acceptable avec Recherche ou STXT

Je vous remercie par avance :)

Cordialement
 

Pièces jointes

  • exctration du numero.xlsx
    8.8 KB · Affichages: 53

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Tridarius
[bienvenue sur le forum]
Merci beaucoup c'est fort agréable de pouvoir compter sur la communauté
Ce qui serait chouette aussi c'est que la communauté des nouveaux membres pensent à lire la charte du forum:rolleyes:
5 – La possibilité de joindre des fichiers est donnée sur ce forum.
Ne pas hésiter à utiliser cette fonction, tout en veillant que les données soient bidons et donc qu’aucune donnée confidentielle, nominative ne soit dans le fichier.
 

job75

XLDnaute Barbatruc
Bonjour Tridarius, Hieu, Jean-Marie, le forum,

Les numéros de téléphone n'ont pas toujours 10 chiffres (numéros internationaux ou étrangers) et ceux-ci ne sont pas toujours séparés par des espaces.

Dans ce cas on peut utiliser cette fonction VBA :
Code:
Function NumeroTelephone$(t$, code$)
Dim i%, x$, flag As Boolean, fin%, deb%
i = InStr(t, code)
If i = 0 Then Exit Function
For i = i + Len(code) To Len(t) + 1
  x = Mid(t, i, 1)
  If flag Then
    If Not IsNumeric(x) And x <> " " Then fin = i: Exit For
  Else
    If IsNumeric(x) Or x = "+" Then deb = i: flag = True
  End If
Next
If deb Then NumeroTelephone = Application.Trim(Mid(t, deb, fin - deb))
End Function
Le code doit toujours être placé dans un module standard (Alt+F11).

Fichier joint.

Nota : pour la confidentialité, a priori il s'agirait d'entreprises, ça ne peut que leur faire une pub gratuite...

A+
 

Pièces jointes

  • exctration du numero(1).xlsm
    16.1 KB · Affichages: 29

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Code:
Function Tph(chaine)
 Set obj = CreateObject("vbscript.regexp")
 obj.Pattern = "\d{2}[-/ ]\d{2}[-/ ]\d{2}[-/ ]\d{2}[-/ ]\d{2}"
 Set a = obj.Execute(chaine)
 If a.Count > 0 Then Tph = a(0) Else Tph = ""
End Function

JB
 

Pièces jointes

  • Copie de Regexp4-1.xls
    42.5 KB · Affichages: 30

job75

XLDnaute Barbatruc
Re, bonjour JB,

J'ai vu que dans certains pays il peut y avoir des lettres dans les numéros de téléphones (c'était le cas en France autrefois).

Dans ce cas il n'y a pas d'autre moyen que de les encadrer (par exemple par des guillemets comme dans l'exemple).

On utilisera alors cette fonction, nettement plus simple :
Code:
Function NumeroTelephoneA$(t$, code$)
If Not t Like "*" & code & "*""*""*" Then Exit Function
Dim i%, j%
i = InStr(t, code)
i = InStr(i + Len(code), t, """") + 1
j = InStr(i, t, """")
NumeroTelephoneA = Application.Trim(Mid(t, i, j - i))
End Function
Fichier (2).

A+
 

Pièces jointes

  • exctration du numero(2).xlsm
    17.5 KB · Affichages: 29
Dernière édition: