Relis plus attentivement ce que j'ai écrit au lieu de rouler des yeuxbonsoir eriiiic
relis le code
les numeros sont nettoyés avant test right 9
Vivi STP confirme qu'on a tous les cas de Figures ! (Monaco c'est pour moi !)
Bonjour Messieurs,Si Virginie est d'accord alors, "la cliente est Reine" moi je n'utiliserai pas ce travail pour moi, c'est juste pour me remettre un peu dans le monde VBA, je suis trop niveau boulot dans TSQL et le C/al et maintenant le AL... Ca me distrait
@+Thierry
Sub numTel()
Dim datas, lig As Long, num As String, i As Long, b_fr As Boolean
datas = Range("A1:A15").Value2
For lig = 1 To UBound(datas)
b_fr = False
num = Replace(Replace(Replace(Replace(Replace(datas(lig, 1), " ", ""), ".", ""), "-", ""), ",", ""), "+", "")
If Left(num, 4) = "0033" Then num = Right(num, 9): b_fr = True
i = 1: Do While Mid(num, i, 1) = "0": i = i + 1: Loop
If Len(num) - i + 1 = 9 Or Len(num) = 11 And Left(num, 2) = "33" Then num = Right(num, 9): b_fr = True
If b_fr Then
Select Case Left(num, 1)
Case "6", "7"
datas(lig, 1) = Format(Val(num), """0033-""#-########")
Case Else
datas(lig, 1) = "0033-" & num
End Select
End If
Next lig
[B1].Resize(UBound(datas)) = datas
End Sub
Déjà que la dernière version de Thierry je n'arrive pas à le remplacer dans le module existant, car tu as la valeur en colonne A et le résultat en B.
Hello,Bonjour à tous,
@patrick. Pour être plus précis, teste ta proposition avec le 03.34.74.45.12 par exemple.
Une proposition, tout numéro non reconnu comme national est laissé tel que :
ericCode:Sub numTel() Dim datas, lig As Long, num As String, i As Long, b_fr As Boolean datas = Range("A1:A15").Value2 For lig = 1 To UBound(datas) b_fr = False num = Replace(Replace(Replace(Replace(Replace(datas(lig, 1), " ", ""), ".", ""), "-", ""), ",", ""), "+", "") If Left(num, 4) = "0033" Then num = Right(num, 9): b_fr = True i = 1: Do While Mid(num, i, 1) = "0": i = i + 1: Loop If Len(num) - i + 1 = 9 Or Len(num) = 11 And Left(num, 2) = "33" Then num = Right(num, 9): b_fr = True If b_fr Then Select Case Left(num, 1) Case "6", "7" datas(lig, 1) = Format(Val(num), """0033-""#-########") Case Else datas(lig, 1) = "0033-" & num End Select End If Next lig [B1].Resize(UBound(datas)) = datas End Sub
21234556567 | 21234556567 | 0033-2-34556567 | FAUX |
Sub Test_Eric()
Const codeInt As String = "1,32,34,39,44,49,262,352,376,377"
'Const lNumInt As String = "?,?,?,?,?,?,?,?,9,9"
Dim datas, lig As Long, num As String, i As Long, b_fr As Boolean, ci
datas = Range("A1:A50").Value2
ci = Split(codeInt, ",")
For lig = 1 To UBound(datas)
b_fr = False
num = Replace(Replace(Replace(Replace(Replace(datas(lig, 1), " ", ""), ".", ""), "-", ""), ",", ""), "+", "")
If Left(num, 4) = "0033" Then num = Right(num, 9): b_fr = True
i = 1: Do While Mid(num, i, 1) = "0": i = i + 1: Loop ' éliminer zéros du début
If (Len(num) - i + 1 = 9 Or Len(num) = 11 And Left(num, 2) = "33") And Left(num, 2) <> "00" Then num = Right(num, 9): b_fr = True
If b_fr Then ' national
Select Case Left(num, 1)
Case "6", "7" ' mobiles
datas(lig, 1) = "0033-" & num
Case Else ' régionaux
datas(lig, 1) = Format(Val(num), """0033-""#-########")
End Select
ElseIf Left(num, 2) = "00" Then ' international
For i = 0 To UBound(ci)
If Mid(num, 3, Len(ci(i))) = ci(i) Then
datas(lig, 1) = Left(num, Len(ci(i)) + 2) & "-" & Mid(num, Len(ci(i)) + 3)
Exit For
End If
Next i
End If
Next lig
[B1].Resize(UBound(datas)) = datas
End Sub
1673227883 | 1673227883 | 0033-673227883 | FAUX |
Hello,1673227883 ne correspond pas à un n° correct, on ne peut pas le valider et remplacer le 1 par 0033
eric
Pour ma part ce n'est pas une bonne idée car si le format de la cellule n'est pas correcte une cellule commençant pas des Zéros sont automatiquement supprimés, et ca arriveeeeeeeeeee souventJe ne les traite que s'ils commencent par "00"