VBA convrtir un nombre en lettres

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.

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  ?

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

Bonjour,

Essayer ma fonction personnalisée

42chiffrelettre1.xlsm (33.95 Ko)

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 Function

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

Rechercher des sujets similaires à "vba convrtir nombre lettres"