Comment convertir un nombre en chiffres romains en VB ?
Bien que le système de numérotation en chiffres romains ne soit plus guère utilisé de nos jours, il peut être intéressant de disposer d'une fonction permettant de convertir un nombre dans cette notation. L'implémentation proposée ici utilise la notation classique; pour plus de détails sur les différentes notations, on pourra se référer à l'article de wikipédia dans la section "Pour aller plus loin".
Private Function DigitsToRoman(ByVal number As String) As String
Const ROMDIG As String = "IXCMVLD" Const MAXROM As Integer = 3999 Const POSFIV As Integer = 5 Dim i As Integer Dim va As Integer Dim le As Integer Dim cv As Integer Dim rd As String Dim re As String number = Trim$(number) va = Val(number) If (va > 0) And (va < MAXROM) Then le = Len(number) For i = le - 1 To 0 Step -1 cv = Val(Mid$(number, le - i, 1)) rd = Mid$(ROMDIG, i + 1, 1) Select Case cv Case 0 To 3 re = re & _ String$(cv, rd) Case 4 To 5 re = re & _ String$(POSFIV - cv, rd) & Mid$(ROMDIG, i + POSFIV, 1) Case 6 To 8 re = re & _ Mid$(ROMDIG, i + POSFIV, 1) & String$(cv - POSFIV, rd) Case 9 re = re & _ rd & Mid$(ROMDIG, i + 2, 1) End Select Next i DigitsToRoman = re End If End Function
Exemple d'utilisation Dim n As Integer Dim result As String n = 1969 result = DigitsToRoman(Str$(n)) MsgBox n & " en chiffres romains : " & result
Remarque : comme il est mentionné dans le commentaire de la fonction, le nombre à convertir doit être dans l'intervalle 0-3999. Pour aller plus loin Voir aussi : |
Date de publication : 11 septembre 2008
Dernière modification : 11 septembre 2008
Rubriques : Algorithmique, Divers, Texte & strings
Mots-clés : convertir, conversion, nombres, chiffres, arabes, arabe, romain, romains, roman, numeral, représentation, string, mid, const |