Function ExtractTelPortable(maChaine As String, x As Byte, sep As String, Optional tel As Boolean = True) As String
'Extraie des séries de Nº d'une chaîne
'- maChaine : la chaîne contenant des séries de Nº
'- x : position du Nº que l'on recherche dans la chaîne
'- sep : séparateur que l'on veut placer entre les groupes de chiffres d'un même Nº
'- tel : par défaut "True" (--> portables). Si "False", alors il s'agit de Nº de postes fixes
'J'ai privilégié les portables, car je pense que les postes fixes sont voués à disparaître... It's good for Big Brother!
'Et pour bien nous casser les couilles quand on arrive en France et que l'on ne peut prévenir personne à la Gare du Nord où il n'y a plus une seule cabine téléphonique...!!!
Dim MesBoSep, a, n As Byte, i As Integer, j As Integer, trouve As String, cadena As String
'*************** Épurage de la chaîne initiale ***************
MesBoSep = Array(".", ",", ";", "-", "/", "|", "~", "*", "+")
For Each a In MesBoSep
maChaine = Replace(maChaine, a, " ")
Next
maChaine = SingleSpaceBetweenWonderfulWords(maChaine)
'*************************************************************
For n = 1 To x
For i = 1 To Len(maChaine)
trouve = Mid(maChaine, i, 1)
If IsNumeric(trouve) Then
maChaine = Right(maChaine, Len(maChaine) - i + 1) 'on supprime tout ce qui n'est pas numérique à gauche de la chaîne
For j = 1 To Len(maChaine)
trouve = Mid(maChaine, j, 1)
If trouve <> " " And IsNumeric(trouve) = False Then
cadena = Trim(Left(maChaine, j - 1)) 'on récupère uniquement la 1ère série de chiffres (à gauche) de "maChaine" : celle qui nous intéresse
maChaine = Mid(maChaine, Len(cadena) + 1, Len(maChaine) - Len(cadena)) '"maChaine" est amputée de sa 1ère série de chiffres
Exit For
End If
Next
Exit For
End If
Next
Next
If sep = "Nada" Then sep = "" 'facultatif. Ici, uniquement pour les besoins de la liste déroulante de la feuille où "Nada" = rien du tout
If tel Then 'on ne veut récupérer que les Nº de portables
ExtractTelPortable = IIf(Left(cadena, 1) <> 0, "", Replace(cadena, " ", sep)) & " | n = " & n
Else 'on ne veut récupérer que les Nº de postes fixes
ExtractTelPortable = IIf(Left(cadena, 1) = 0, "", Replace(cadena, " ", sep)) & " | n = " & n
End If
End Function