Chiffre arabe en romain
Résolu
Bonjour, J'ai un soucis avec un projet en VB je ne comprend pas comment on pourrais faire pour le créer.
Merci de bien vouloir me répondre
Merci de bien vouloir me répondre
3 réponses
-
Contributeurre,
On convertit un chiffre arabe <4000 en chiffre romain
par ex 2954 devrait donner MMCMLIV
proposition VBADim Romain As String Sub test() convertir_arabic_roman 1054 MsgBox Romain Romain = "" End Sub '-------- Sub convertir_arabic_roman(Nombre) Dim Chiffre As Byte If Nombre > 3999 Then GoTo depassement 'milliers If Nombre > 999 Then Chiffre = Int(Nombre / 1000) 'romain = Application.Rept("M", chiffre) 'VbA Excel For cptr = 1 To Chiffre Romain = Romain & "M" Next Nombre = Nombre Mod 1000 End If 'centaines If Nombre > 99 Then concatener_romain Nombre, 100, "C", "D" Nombre = Nombre Mod 100 End If 'dizaines If Nombre > 9 Then concatener_romain Nombre, 10, "X", "L" Nombre = Nombre Mod 10 End If 'unités concatener_romain Nombre, 1, "I", "V" Exit Sub depassement: MsgBox "nombre > 3999", vbCritical End Sub '--------- Sub concatener_romain(Arabe, Diviseur, Encours, Cinq_n) Dim Chiffre As Byte Dim Ssschiffre As String Chiffre = Int(Arabe / Diviseur) Select Case Chiffre Case Is = 9 Romain = Romain & Encours & Right(Romain, 1) Case Is > 5 For cptr = 6 To Chiffre sschiffre = sschiffre & Encours Next Romain = Romain & Cinq_n & sschiffre Case Is = 5 Romain = Romain & Cinq_n Case Is = 4 Romain = Romain & Encours & Cinq_n Case Else For cptr = 1 To Chiffre Romain = Romain & Encours Next End Select End Sub
-
-
-
ContributeurEffectivement ta suggestion est + élégante que la mienne et j'aurai appris qqchose.merci :o)
ci joint la bricole
https://www.cjoint.com/?3JDr0dtKtyx
-
-
Bonjour,
Tu pourrais expliquer plus clairement ton soucis ?
Tu as un problème de police de caractère ?
Tu veux un algorithme qui traduise un nombre écrit en français en chiffre romain ? Ou un nombre écrit en arabe en chiffre romain ?
Tu as un problème pour créer un projet dans Visual Studio ?
C'est vraiment pas clair !
Xavier -
ContributeurBonjour,
On trouve quelques proc VB pour traduire des chiffres romains en chiffres arabes
au cas où cela t'interesserait
http://frederic.sigonneau.free.fr/code/Fonctions/ChiffresRomainsChiffresArabes1.txt
http://frederic.sigonneau.free.fr/code/Fonctions/ChiffresRomainsChiffresArabes2.txt
une piste: l'idée serait d'utiliser les propriétés INT d'une division et MOD pour le reste et répétition du résultat et concaténer
par exemple 2200: nbre_m= int(arabe,1000) renvoie 2 soit rept("M",nbre_int)
ensuite
arabe=arabe mod 1
a vue de nez, le problème reste le cas des chiffres 4 et 9
je regarde de mon coté (VBA)
nota : on ne pourra certainement pas aller au delà de 3999
Michel