Chiffre arabe en romain
Résolu
tiplouf2
Messages postés
821
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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
A voir également:
- Convertisseur chiffre en lettre en arabe
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Clavier iphone chiffre et lettre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Chiffre en lettre - Télécharger - Outils professionnels
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
3 réponses
re,
On convertit un chiffre arabe <4000 en chiffre romain
par ex 2954 devrait donner MMCMLIV
proposition VBA
On convertit un chiffre arabe <4000 en chiffre romain
par ex 2954 devrait donner MMCMLIV
proposition VBA
Dim 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
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
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
Bonjour,
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
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
Belle démo (+1) : tu devrais la poster dans les astuces.
Mais appariement il y a une fonction VB que tu a oublié (:
For cptr = 1 To Chiffre Romain = Romain & "M" NextÉquivalent :
Cdlt.
merci pour les compliments :o), j'en suis tout colorindex 3 !!!
concernant ta remarque en Excel j'ai utilisé la fonction worksheetfunction "rept"(voir le code + haut), je regarde ta suggestion je te passe la version Excel (macros paramétrées)
ci joint la bricole
https://www.cjoint.com/?3JDr0dtKtyx