Problème conversion chiffres en lettre avec 3 chiffre après la virgule (dinar)
Vstappers
-
PapyLuc51 Messages postés 4531 Date d'inscription Statut Membre Dernière intervention -
PapyLuc51 Messages postés 4531 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Convertir chiffre en lettre dinars tunisien excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Clavier iphone chiffre et lettre - Guide
- Excel trier par ordre croissant chiffre - Guide
- Convertir chiffre en lettre excel sans macro ✓ - Forum Excel
- Chiffre en lettre - Télécharger - Outils professionnels
4 réponses
Bonjour,
Exemple ici:
https://www.bonbache.fr/convertir-les-nombres-en-textes-en-vba-excel-165.html
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
Bon courage
@+ Le Pivert
Je me suis lancé sans connaitre le langage VBA ; j'ai donc suivis tes conseils donnés à Vstappers en faisant du copier/coller et en faisant les rectifications par rapport à la vidéo notamment remplacer les ' par ".
J'y ai ajouté un code que trouvé sur la toile pour avoir la description de la fonction dans la fenêtre "Arguments de la fonction"
J'ai suivi les indications de la vidéo pour enregistrer le fichier .xlam au bon endroit
Cordialement