Transformer des chiffres en nombre romain

0/5 (3 avis)

Vue 18 410 fois - Téléchargée 651 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
27 oct. 2007 à 18:49
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
27 oct. 2007 à 18:45
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
9 mars 2007 à 22:35
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.