Problème conversion chiffres en lettre avec 3 chiffre après la virgule (dinar)

A voir également:Problème conversion chiffres en lettre avec 3 chiffre après la virgule (dinar)Conversion chiffre en lettre excel - Conseils pratiques - Langages EXCEL transformer chiffres en lettre -facture ✓ - Forum - Excel Conversion-chiffres-lettres-arabe - Forum - Programmation Conversion chiffre en lettre anglais - Forum - Excel Algorithme conversion chiffre en lettre - Forum - C

Bonjour,

je dois convertir beaucoup de chiffre ne Lettre pour de la comptabilité.

J'ai trouvé des macro en Euro pour faire ca.

mais j'ai besoin de dinars, changer les intitulé Dinar est a ma porté.

La ou CA se complique c'est que le dinars utilise 3 chiffres après la virgule, des millime et pas des centimes

la conversion se fait mal avec mon macro

exemple 10,651 me donne dix Dinars soixante cinq millime et non dix dinars six cents cinquante et un millime.

Qlq un peux til m'aider ?

voici le macro que j'utilise, si qlq un peux le modifier ou me donner un autre , ca serait supper

Merci a vous





Function chiffrelettre(chiffre) ' Youky

Dim a As Variant, gros As Variant
a = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _
"huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", _
"dix huit", "dix neuf", "vingt", "vingt et un", "vingt deux", "vingt trois", "vingt quatre", _
"vingt cinq", "vingt six", "vingt sept", "vingt huit", "vingt neuf", "trente", "trente et un", _
"trente deux", "trente trois", "trente quatre", "trente cinq", "trente six", "trente sept", _
"trente huit", "trente neuf", "quarante", "quarante et un", "quarante deux", "quarante trois", _
"quarante quatre", "quarante cinq", "quarante six", "quarante sept", "quarante huit", _
"quarante neuf", "cinquante", "cinquante et un", "cinquante deux", "cinquante trois", _
"cinquante quatre", "cinquante cinq", "cinquante six", "cinquante sept", "cinquante huit", _
"cinquante neuf", "soixante", "soixante et un", "soixante deux", "soixante trois", _
"soixante quatre", "soixante cinq", "soixante six", "soixante sept", "soixante huit", _
"soixante neuf", "soixante dix", "soixante et onze", "soixante douze", "soixante treize", _
"soixante quatorze", "soixante quinze", "soixante seize", "soixante dix sept", _
"soixante dix huit", "soixante dix neuf", "quatre-vingts", "quatre-vingt un", _
"quatre-vingt deux", "quatre-vingt trois", "quatre-vingt quatre", "quatre-vingt cinq", _
"quatre-vingt six", "quatre-vingt sept", "quatre-vingt huit", "quatre-vingt neuf", _
"quatre-vingt dix", "quatre-vingt onze", "quatre-vingt douze", "quatre-vingt treize", _
"quatre-vingt quatorze", "quatre-vingt quinze", "quatre-vingt seize", "quatre-vingt dix sept", _
"quatre-vingt dix huit", "quatre-vingt dix neuf")
gros = Array("", "billions", "milliards", "millions", "mille", "Dinars", "billion", _
"milliard", "million", "mille", "Dinar")
sp = Space(1)
chaine = "00000000000000"
millime = chiffre * 100 - (Int(chiffre) * 100)
chiffre = Str(Int(chiffre)): lg = Len(chiffre) - 1: chiffre = Right(chiffre, lg): lg = Len(chiffre)
If lg < 15 Then chaine = Mid(chaine, 1, (15 - lg)) Else chaine = ""
chiffre = chaine + chiffre
'billions au centaines
gp = 1
For k = 1 To 5
x = Mid(chiffre, gp, 1): c = a(Val(x))
x = Mid(chiffre, gp + 1, 2): d = a(Val(x))
If k = 5 Then
If t2 <> "" And c & d = "" Then mydz = "Dinars" & sp: GoTo fin
If t <> "" And c = "" And d = "un" Then mydz = "un Dinars" & sp: GoTo fin
If t <> "" And t2 = "" And c & d = "" Then mydz = "d'Dinars" & sp: GoTo fin
If t & c & d = "" Then myct = "": mydz = "": GoTo fin
End If
If c & d = "" Then GoTo fin
If d = "" And c <> "" And c <> "un" Then mydz = c & sp & "cents " & gros(k) & sp: GoTo fin
If d = "" And c = "un" Then mydz = "cent " & gros(k) & sp: GoTo fin
If d = "un" And c = "" Then myct = IIf(k = 4, gros(k) & sp, "un " & gros(k + 5) & sp): GoTo fin
If d <> "" And c = "un" Then mydz = "cent" & sp
If d <> "" And c <> "" And c <> "un" Then mydz = c & sp & "cent" + sp
myct = d & sp & gros(k) & sp
fin:
t2 = mydz & myct
t = t & mydz & myct
mydz = "": myct = ""
gp = gp + 3
Next
d = a(millime)
If t <> "" Then myct = IIf(millime = 1, " millime", " millimes")
If t = "" Then myct = IIf(millime = 1, " millime d'Dinar", " millimes d'Dinar")
If millime = 0 Then d = "": myct = ""
chiffrelettre = t & d & myct
End Function





Configuration: Windows / Chrome 78.0.3904.70

Forum

A voir également:Problème conversion chiffres en lettre avec 3 chiffre après la virgule (dinar)Conversion chiffre en lettre excel - Conseils pratiques - Langages EXCEL transformer chiffres en lettre -facture ✓ - Forum - Excel Conversion-chiffres-lettres-arabe - Forum - Programmation Conversion chiffre en lettre anglais - Forum - Excel Algorithme conversion chiffre en lettre - Forum - C

Web: www.shapebootstrap.net

4 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Exemple ici:

https://www.bonbache.fr/convertir-les-nombres-en-textes-en-vba-excel-165.html

Il s'agit maintenant de traduire en texte, la devise passée en paramètre ainsi que l'extension des décimales correspondante. Par exemple, on parle de Cents en Euro et de Millimes en Dinar. Pour ce faire, ajouter les lignes de code suivantes : Select Case Devise Case 0 If partieDecimale > 0 Then texteDevise = ' virgule' Case 1 texteDevise = ' Euro' If partieDecimale > 0 Then texteCentimes = ' Cents' Case 2 texteDevise = ' Dollar' If partieDecimale > 0 Then texteCentimes = ' Cent' Case 3 texteDevise = ' Dinar' If partieDecimale = 1 Then texteCentimes = ' Millime' If partieDecimale > 1 Then texteCentimes = ' Millimes' End Select


Reply
réponses:
  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

merci pour l'info, des que j'ai 10 min, je me mets dessus

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonsoir le fil,

J'ai eu utilisé ce code, il me semble qu'il y a un bug, dans les décimales

de 0,1 à 0,9 pas de problème mais à 0,10 il retournait 1 cent et également avec un chiffre entier qui précède exemple jusqu'à 1,09 pas de problème à 1,10 erreur retourne un euro un cent à la place de un euro dix cent
il semblerait que le problème se répète à chaque dizaine 0,20 comme à 0,30 etc ...
je regarde de mon côté comment y remédier à part que j'ai commis une erreur de transcription

Reply
réponses:
  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Pour écrire une valeur en lettres avec des millièmes j'avais modifier une macro dans un fichier de Th.Pourtier
https://www.cjoint.com/c/IKkmYDuelsK
La fonction "MonnaieLettres" est simple à modifier pour afficher des millièmes ( millimes tunisiens ou litres et millilitres):
Dim Decim%, Signe%, Reste#
Signe = Sgn(Nbre)
Decim = Round(Abs(Nbre) - Int(Abs(Nbre)), 2) * 100 '----->> Decim = Round(Abs(Nbre) - Int(Abs(Nbre)), 3) * 1000
Nbre = Int(Abs(Nbre))
L'affichage en chiffres est modifié avec 3 décimales.

Pour oter le "s" à cent devant mille:
Case Is < DixP6
NbL = RTrim(IIf(Nbre \ DixP3 = 1, "", NbL(Nbre \ DixP3, Ut, Dz, Region) & " ") & "mille " & _
NbL(Nbre Mod DixP3, Ut, Dz, Region))
NbL = Replace(NbL, "cents mille", "cent mille") '____________________________________________________________
Case Is < DixP9
NbL = RTrim(NbL(Nbre \ DixP6, Ut, Dz, Region) & " " & "million" & _
IIf(Nbre \ DixP6 > 1, "s ", " ") & NbL(Nbre Mod DixP6, Ut, Dz, Region))

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed