VBA convrtir un nombre en lettres
A
Suite a des recherche sur les forums j'ai trouvé cette macro mais juste un petit soucis j'aime bien que le montant en lettre doit convertir les trois chiffres aprés la virgule et non pas seulement deux chiffres.
merci d'avance.
T
Bonjour,
C'est bien d'avoir posté ton fichier mais c'est l'Addin qu'il aurait fallu poster !
Bonjour,
comment aimeriez-vous que soit écrit les centimes ?
par exemple:
0.2 - vingt centimes
0.202 - vingt centimes et deux millième de centime
0.002 - deux millième de centime
0.056 - cinquante six millième de centime
'ou autre ?A
Bonjour,
comment aimeriez-vous que soit écrit les centimes ?
par exemple:
0.2 - vingt centimes 0.202 - vingt centimes et deux millième de centime 0.002 - deux millième de centime 0.056 - cinquante six millième de centime 'ou autre ?
en unité de notre pays j'aime bien que s'ecrit comme ça
exemple: 0.156 cent cinquante six millimes
et merci pour votre attention
thevPassionné d'Excel
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour à tous,
à tester,
Function NombreEnTexte(nombre, devise)
Dim dv, vtm, tm, x, chiffre, cf, i, t, f, billion, milliard, million, mille, cent, millim
dv = Array("", "dollard", "euro")
vtm = Array(billion, milliard, million, mille, cent)
tm = Array("billion", "milliard", "million", "mille", "cent")
x = Split(nombre - Int(nombre), ".")
chiffre = Format(Int(nombre), "000 000 000 000 000")
cf = Split(chiffre, " ")
For i = UBound(cf) To LBound(cf) Step -1
t = cf(i)
Select Case i
Case 4:
Select Case Val(t)
Case 0:
Case 1: vtm(i) = conver(t) & " " & dv(devise)
Case 2 To 99: vtm(i) = conver(t) & " " & dv(devise) & "s"
Case Else:
If Left(t, 1) = 1 Then
vtm(i) = "cent " & conver(Right(t, 2)) & " " & dv(devise) & "s"
Else
vtm(i) = conver(Left(t, 1)) & " cent " & conver(Right(t, 2)) & " " & dv(devise) & "s"
End If
End Select
Case 3:
Select Case Val(t)
Case 0:
Case 1: vtm(i) = conver(t) & " " & tm(i)
Case 2 To 99: vtm(i) = conver(t) & " " & tm(i) & "s"
Case Else:
If Left(t, 1) = 1 Then
vtm(i) = "cent " & conver(Right(t, 2)) & " " & tm(i) & "s"
Else
vtm(i) = conver(Left(t, 1)) & " cent " & conver(Right(t, 2)) & " " & tm(i) & "s"
End If
End Select
Case 0 To 2:
Select Case Val(t)
Case 0:
Case 1: vtm(i) = conver(t) & " " & tm(i)
Case 2 To 99: vtm(i) = conver(t) & " " & tm(i) & "s"
Case Else:
If Left(t, 1) = 1 Then
vtm(i) = "cent " & conver(Right(t, 2)) & " " & tm(i) & "s"
Else
vtm(i) = conver(Left(t, 1)) & " cent " & conver(Right(t, 2)) & " " & tm(i) & "s"
End If
End Select
End Select
f = nombre - Int(nombre)
f = Format(f, "0.000")
f = f * 1000
Select Case Val(f)
Case 0:
Case 1: millim = conver(f) & " millime"
Case 2 To 99: millim = conver(f) & " millimes"
Case Else:
If Left(f, 1) = 1 Then
millim = "cent " & conver(Right(f, 2)) & " millimes"
Else
millim = conver(Left(f, 1)) & " cent " & conver(Right(f, 2)) & " millimes"
End If
End Select
Next
NombreEnTexte = vtm(0) & " " & vtm(1) & " " & vtm(2) & " " & vtm(3) & " " & vtm(4) & " " & millim
End Function
Function conver(t)
Dim A
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")
conver = A(t)
End FunctionA
Bonjour à tous,
à tester,
Chiffre en Lettre (avec millimes).xlsm
Function NombreEnTexte(nombre, devise) Dim dv, vtm, tm, x, chiffre, cf, i, t, f, billion, milliard, million, mille, cent, millim dv = Array("", "dollard", "euro") vtm = Array(billion, milliard, million, mille, cent) tm = Array("billion", "milliard", "million", "mille", "cent") x = Split(nombre - Int(nombre), ".") chiffre = Format(Int(nombre), "000 000 000 000 000") cf = Split(chiffre, " ") For i = UBound(cf) To LBound(cf) Step -1 t = cf(i) Select Case i Case 4: Select Case Val(t) Case 0: Case 1: vtm(i) = conver(t) & " " & dv(devise) Case 2 To 99: vtm(i) = conver(t) & " " & dv(devise) & "s" Case Else: If Left(t, 1) = 1 Then vtm(i) = "cent " & conver(Right(t, 2)) & " " & dv(devise) & "s" Else vtm(i) = conver(Left(t, 1)) & " cent " & conver(Right(t, 2)) & " " & dv(devise) & "s" End If End Select Case 3: Select Case Val(t) Case 0: Case 1: vtm(i) = conver(t) & " " & tm(i) Case 2 To 99: vtm(i) = conver(t) & " " & tm(i) & "s" Case Else: If Left(t, 1) = 1 Then vtm(i) = "cent " & conver(Right(t, 2)) & " " & tm(i) & "s" Else vtm(i) = conver(Left(t, 1)) & " cent " & conver(Right(t, 2)) & " " & tm(i) & "s" End If End Select Case 0 To 2: Select Case Val(t) Case 0: Case 1: vtm(i) = conver(t) & " " & tm(i) Case 2 To 99: vtm(i) = conver(t) & " " & tm(i) & "s" Case Else: If Left(t, 1) = 1 Then vtm(i) = "cent " & conver(Right(t, 2)) & " " & tm(i) & "s" Else vtm(i) = conver(Left(t, 1)) & " cent " & conver(Right(t, 2)) & " " & tm(i) & "s" End If End Select End Select f = nombre - Int(nombre) f = Format(f, "0.000") f = f * 1000 Select Case Val(f) Case 0: Case 1: millim = conver(f) & " millime" Case 2 To 99: millim = conver(f) & " millimes" Case Else: If Left(f, 1) = 1 Then millim = "cent " & conver(Right(f, 2)) & " millimes" Else millim = conver(Left(f, 1)) & " cent " & conver(Right(f, 2)) & " millimes" End If End Select Next NombreEnTexte = vtm(0) & " " & vtm(1) & " " & vtm(2) & " " & vtm(3) & " " & vtm(4) & " " & millim End Function Function conver(t) Dim A 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") conver = A(t) End Function
merci beaucoup excelent ça fonctionne bien