Public Function CVTRomDec(valeur As String) As Long
'Pour Excel en cellule : Public Function CVTRomDec(cellule As Range) As Long
'Dim valeur As String
'valeur = CStr(cellule.value)
Dim sum As Long
Dim incr As Long
Dim decr As Long
Dim i As Integer
If Len(valeur) = 0 Then
CVTRomDec = 0
Exit Function
End If
sum = 0
For i = Len(valeur) To 1 Step -1
incr = 0
decr = 0
Select Case Mid(valeur, i, 1)
Case "I"
incr = 1
Case "V"
incr = 5
If (i > 1) Then If Mid(valeur, i - 1, 1) = "I" Then decr = 1
Case "X"
incr = 10
If (i > 1) Then If Mid(valeur, i - 1, 1) = "I" Then decr = 1
If (i > 1) Then If Mid(valeur, i - 1, 1) = "V" Then decr = 5
Case "L"
incr = 50
If (i > 1) Then If Mid(valeur, i - 1, 1) = "I" Then decr = 1
If (i > 1) Then If Mid(valeur, i - 1, 1) = "V" Then decr = 5
If (i > 1) Then If Mid(valeur, i - 1, 1) = "X" Then decr = 10
Case "C"
incr = 100
If (i > 1) Then If Mid(valeur, i - 1, 1) = "I" Then decr = 1
If (i > 1) Then If Mid(valeur, i - 1, 1) = "V" Then decr = 5
If (i > 1) Then If Mid(valeur, i - 1, 1) = "X" Then decr = 10
If (i > 1) Then If Mid(valeur, i - 1, 1) = "L" Then decr = 50
Case "D"
incr = 500
If (i > 1) Then If Mid(valeur, i - 1, 1) = "I" Then decr = 1
If (i > 1) Then If Mid(valeur, i - 1, 1) = "V" Then decr = 5
If (i > 1) Then If Mid(valeur, i - 1, 1) = "X" Then decr = 10
If (i > 1) Then If Mid(valeur, i - 1, 1) = "L" Then decr = 50
If (i > 1) Then If Mid(valeur, i - 1, 1) = "C" Then decr = 100
Case "M"
incr = 1000
If (i > 1) Then If Mid(valeur, i - 1, 1) = "I" Then decr = 1
If (i > 1) Then If Mid(valeur, i - 1, 1) = "V" Then decr = 5
If (i > 1) Then If Mid(valeur, i - 1, 1) = "X" Then decr = 10
If (i > 1) Then If Mid(valeur, i - 1, 1) = "L" Then decr = 50
If (i > 1) Then If Mid(valeur, i - 1, 1) = "C" Then decr = 100
If (i > 1) Then If Mid(valeur, i - 1, 1) = "D" Then decr = 500
Case Else
CVTRomDec = 0
Exit Function
End Select
sum = sum + incr
If decr <> 0 Then
sum = sum - decr
i = i - 1
End If
Next
CVTRomDec = sum
End Function