Bonjour,
Un exemple en VBA
Sub ConvertRange()
Dim i As Long
' On nettoie les données (caractères de saut de ligne et tabulation
For i = 1 To 7
Cells(i, "C") = NettoyerTexte(Cells(i, "B").Text)
Next i
' On sépare le texte par colonne en fonction du séparteur "|"
Range("C1:C7").TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="|", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
End Sub
Private Function NettoyerTexte(sText As String) As String
Dim bIs10 As Boolean, bMobile As Boolean, sNewText As String
Dim iMobile As Long, x As Long, y As String, a As Long
For x = 1 To Len(sText)
y = Mid(sText, x, 1)
Select Case Asc(y)
Case 10
If Not bIs10 Then bIs10 = True
a = a + 1
If a = 5 Then bMobile = True
Case 9
Case Else
sNewText = sNewText & IIf(bIs10 And bMobile, "|" & y, y)
bIs10 = False: a = 0
End Select
Next x
NettoyerTexte = sNewText
End Function
Pas certain que cela soit efficace à 100% car les données sont différentes d'une ligne à l'autre, par exemple en ligne 3, il n'y a pas l'indication Mobile, j'ai dû adapter en fonction du jeu de test.
Benead