Bonsoir à tous,
Une autre méthode par vba combinant deux fonctions biens utiles dans ce cas-là : StrReverse (qui inverse une chaîne de caractères) et Val (qui renvoie le nombre contenu dans une chaîne de caractère). A savoir que la fonction Val arrête la lecture de la chaîne au premier caractère ne faisant apparemment pas partie d'un nombre. (Source : aide excel vba)
D'où l'utilisation de la fonction StrReverse :
Sub test()
Dim i As Integer, posChiffre As Byte, Cel As String, lettre As String, chiffre As String
Application.ScreenUpdating = False
For i = 1 To Range("A65536").End(xlUp).Row
Cel = Cells(i, 1)
If Cel <> "" Then
posChiffre = InStr(Cel, StrReverse(Val(StrReverse(Cel)))) - 1
lettre = Left(Cel, posChiffre)
chiffre = Replace(Cel, lettre, "")
Range("B" & i & ":C" & i).Value = Array(lettre, chiffre)
End If
Next i
End Sub
Les données à séparer se trouvent dans la colonne A et doivent commencer par une lettre.