Transformer des chiffres en nombre romain

Soyez le premier à donner votre avis sur cette source.

Vue 17 916 fois - Téléchargée 594 fois

Description

Comment transformer un Nombre en Chiffre Romain ?

Mettez Cette Fonction dans votre Module :

Source / Exemple :


Function NbEnRomain(Nb As Integer) As String
    Dim ChiffreRomain As String
    ChiffreRomain = String(Int(Nb / 1000), "M")
    Nb = Nb - (Int(Nb / 1000) * 1000)

    If Nb >= 900 Then
        ChiffreRomain = ChiffreRomain & "CM"
    ElseIf Nb >= 500 And Nb < 900 Then
        ChiffreRomain = ChiffreRomain & "D" & String(Int((Nb - 500) / 100), "C")
    ElseIf Nb >= 400 And Nb < 500 Then
        ChiffreRomain = ChiffreRomain & "CD"
    Else
        ChiffreRomain = ChiffreRomain & String(Int(Nb / 100), "C")
    End If

    Nb = Nb - (Int(Nb / 100) * 100)

    If Nb >= 90 Then
        ChiffreRomain = ChiffreRomain & "XC"
    ElseIf Nb >= 50 And Nb < 90 Then
        ChiffreRomain = ChiffreRomain & "L" & String(Int((Nb - 50) / 10), "X")
    ElseIf Nb >= 40 And Nb < 50 Then
        ChiffreRomain = ChiffreRomain & "XL"
    Else
        ChiffreRomain = ChiffreRomain & String(Int(Nb / 10), "X")
    End If

    Nb = Nb - (Int(Nb / 10) * 10)

    If Nb >= 9 Then
        ChiffreRomain = ChiffreRomain & "IX"
    ElseIf Nb >= 5 And Nb < 9 Then
        ChiffreRomain = ChiffreRomain & "V" & String(Int((Nb - 5) / 1), "I")
    ElseIf Nb >= 4 And Nb < 5 Then
        ChiffreRomain = ChiffreRomain & "IV"
    Else
        ChiffreRomain = ChiffreRomain & String(Int(Nb / 1), "I")
    End If

    NbEnRomain = ChiffreRomain
End Function

' Pour L'executer ex :

NbEnRomain(1225)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_psycho
Messages postés
232
Date d'inscription
samedi 11 mai 2002
Statut
Membre
Dernière intervention
27 octobre 2007
-
J'avais oublié la note...
cs_psycho
Messages postés
232
Date d'inscription
samedi 11 mai 2002
Statut
Membre
Dernière intervention
27 octobre 2007
-
Pour un code aussi simple, il est tout de meme regrettable de voir un manque d'optimisation ainsi qu'un niveau "initié". Alors je vais mettre 6 (je trouve la note actuelle loin d'etre representative vis a vis de ce qui suit) et voici mes remarques.

* Nb = Nb - (Int(Nb / 10) * 10), ce n'est rien d'autre que le modulo ecrit en plus compliqué. On peut voir 3 operations "lourdes" alors qu'une seule aurait suffi. Je ne vois pas le point de complique la lecture.

*ElseIf Nb >= 4 And Nb < 5 Then , je ne sais pas si les tests sont optimise comme en C, mais puisque Nb est compris entre 1 et 10, avec les tests précédents, si Nb est >=4 alors Nb vaut forcement 4.

*Int((Nb - 5) / 1), je crois que tout le monde peut diviser par 1...

Pas mal, mais dommage...
6/10 donc.

A bientot
CORBnet
Messages postés
47
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
7 janvier 2012
-
sympa...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.