Function EnTexte(Valeur As Integer, NbPos As Integer) As String
Dim U, D, V, Exc
Dim JJ As Integer, Unite As Integer, Dizaine As Integer
U = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf")
D = Array("", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
V = Array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre-vingt", "quatre-vingt")
Exc = Array("", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
Dim A As Integer, Au As Integer, Auc As String, ET As String
Unite = Valeur Mod 10
Dizaine = Int(Valeur / 10)
Select Case NbPos
Case 2
Select Case Dizaine
Case 0
EnTexte = IIf(Valeur = 1, "premier", IIf(Unite = 0, "", U(Valeur)))
Case 1
EnTexte = D(1 + Unite)
Case 2, 3, 4, 5, 6
EnTexte = V(Dizaine) & IIf(Unite > 1, "-", IIf(Unite = 0, "", " et ")) & U(Unite)
Case 8
EnTexte = V(Dizaine) & IIf(Unite = 0, "", "-") & U(Unite)
Case 7, 9
EnTexte = V(Dizaine) & IIf(Unite = 0, "dix", IIf(Unite = 1, " et ", "-") & Exc(Unite))
Case Else
End Select
Case 4
A = Valeur \ 1000
If A > 0 Then EnTexte = " " & IIf(U(A) = "un", "mil", U(A) & " mille")
A = (Valeur Mod 1000) \ 100
If A > 0 Then EnTexte = EnTexte & " " & IIf(U(A) = "un", "cent", U(A) & " cent")
Case Else
End Select
End Function