Bonjour
VBA
soit une sub qui met le résultat à côté du tableau
Sub Decoupe()
Dim Arr As Variant, Arr2 As Variant, Cible As Range
With [tSource].ListObject
Arr = .DataBodyRange
Set Cible = .DataBodyRange.Offset(0, 2)
Cible.ClearContents
Arr2 = Cible
For i = 1 To UBound(Arr)
Txt = Arr(i, 1)
For J = 2 To Len(Txt)
CC = Asc(Mid(Txt, J, 1))
CP = Asc(Mid(Txt, J - 1, 1))
If CC >= 48 And CC <= 57 And CP >= 48 And CP <= 57 Then
Cas = "N"
ElseIf CC >= 65 And CC <= 90 And CP >= 65 And CP <= 90 Then
Cas = "M"
ElseIf CC >= 97 And CC <= 122 And CP >= 97 And CP <= 122 Then
Cas = "m"
End If
Arr2(i, 1) = Arr2(i, 1) & IIf(J = 2, Mid(Txt, J - 1, 1), "") & IIf(Cas = "", ", ", "") & Mid(Txt, J, 1)
Cas = ""
Next J
On Error Resume Next
Arr2(i, 1) = CLng(Arr2(i, 1))
On Error GoTo 0
Next i
Cible.Value = Arr2
End With
End Sub
soit une fonction à utiliser sur chaque ligne
Function FDecoupe(T As Range)
If T.Count > 1 Then Exit Function
For J = 2 To Len(T)
CC = Asc(Mid(T, J, 1))
CP = Asc(Mid(T, J - 1, 1))
If CC >= 48 And CC <= 57 And CP >= 48 And CP <= 57 Then
Cas = "N"
ElseIf CC >= 65 And CC <= 90 And CP >= 65 And CP <= 90 Then
Cas = "M"
ElseIf CC >= 97 And CC <= 122 And CP >= 97 And CP <= 122 Then
Cas = "m"
End If
FDecoupe = FDecoupe & IIf(J = 2, Mid(T, J - 1, 1), "") & IIf(Cas = "", ", ", "") & Mid(T, J, 1)
On Error Resume Next
FDecoupe = CLng(FDecoupe)
Cas = ""
Next J
End Function