Re : convertir les chiffre en lettre
bjr
je te propose ceci
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 08/12/2009 par ENSH
'
Function CHIFLETR(Nombre, Optional Monnaie As String = "euro", Optional Maju As Boolean = True)
' CETTE FONCTION TRADUIT EN LETTRES UN NOMBRE POSITIF INFERIEUR
' AU MILLIARD, AVEC DEUX DECIMALES
' Elle fait appel à la macro "Codage" ci-dessous,
' qui en est indissociable
Dim TrCent As Boolean
Dim CenTouRon As Boolean
Dim Entiers As Long
Dim Centimes As Long
Dim TrUnités As Integer
Dim TrMilles As Integer
Dim TrMlions As Integer
Dim QuUnités As Long
Dim QuMilles As Long
Dim QuMlions As Long
Dim Lib As String
If Nombre > 999999999.99 Then
CHIFLETR = ""
Exit Function
End If
Entiers = Int(Nombre)
Centimes = (Nombre - Entiers) * 100
TrUnités = Entiers Mod 1000
QuUnités = Entiers \ 1000
TrMilles = QuUnités Mod 1000
QuMilles = QuUnités \ 1000
TrMlions = QuMilles Mod 1000
QuMlions = QuMilles \ 1000
Lib = ""
CenTouRon = (Entiers Mod 100) = 0
If TrMlions <> 0 Then
Call Codage(TrMlions, Lib, CenTouRon, False)
If TrMlions = 1 Then
Lib = Lib & "million "
Else
Lib = Lib & "millions "
End If
End If
If TrMilles <> 0 Then
If TrMilles <> 1 Then
Call Codage(TrMilles, Lib, CenTouRon, False)
End If
Lib = Lib & "mille "
End If
If TrUnités <> 0 Then
Call Codage(TrUnités, Lib, CenTouRon, True)
End If
If Entiers >= 2 Then
Lib = Lib & Monnaie & "s "
ElseIf Entiers >= 1 Then
Lib = Lib & Monnaie & " "
Else
Lib = "zéro " & Monnaie & " "
End If
If Centimes <> 0 Then
Lib = Lib & "et "
Call Codage(Centimes, Lib, CenTouRon, False)
If Centimes = 1 Then
Lib = Lib & "centime "
Else
Lib = Lib & "centimes "
End If
End If
CHIFLETR = Lib
If Maju Then CHIFLETR = UCase(CHIFLETR)
End Function
Sub Codage(Tranche, Lib, CenTouRon, TrCent)
' CETTE MACRO EST INDISSOCIABLE DE LA FONCTION CHIFLETR
' CI-DESSUS, ET TRADUIT EN LETTRES UNE TRANCHE DE 3 CHIFFRES
Dim C As Byte, D As Byte, D1 As Byte, U As Byte
Dim T00 As Variant
Dim Tb0 As Variant, Tb1 As Variant, Tb2 As Variant, Tb3 As Variant, Tb4 As Variant
Dim Tb5 As Variant, Tb6 As Variant, Tb7 As Variant, Tb8 As Variant, Tb9 As Variant
T00 = Array("", "", "deux ", "trois ", "quatre ", "cinq ", "six ", "sept ", "huit ", "neuf ")
Tb0 = Array("", "un ", "deux ", "trois ", "quatre ", "cinq ", "six ", "sept ", "huit ", "neuf ")
Tb1 = Array("dix ", "onze ", "douze ", "treize ", "quatorze ", "quinze ", "seize ", "dix-sept ", "dix-huit ", "dix-neuf ")
Tb2 = Array("vingt ", "vingt-et-un ", "vingt-deux ", "vingt-trois ", "vingt-quatre ", "vingt-cinq ", "vingt-six ", "vingt-sept ", "vingt-huit ", "vingt-neuf ")
Tb3 = Array("trente ", "trente-et-un ", "trente-deux ", "trente-trois ", "trente-quatre ", "trente-cinq ", "trente-six ", "trente-sept ", "trente-huit ", "trente-neuf ")
Tb4 = Array("quarante ", "quarante-et-un ", "quarante-deux ", "quarante-trois ", "quarante-quatre ", "quarante-cinq ", "quarante-six ", "quarante-sept ", "quarante-huit ", "quarante-neuf ")
Tb5 = Array("cinquante ", "cinquante-et-un ", "cinquante-deux ", "cinquante-trois ", "cinquante-quatre ", "cinquante-cinq ", "cinquante-six ", "cinquante-sept ", "cinquante-huit ", "cinquante-neuf ")
Tb6 = Array("soixante ", "soixante-et-un ", "soixante-deux ", "soixante-trois ", "soixante-quatre ", "soixante-cinq ", "soixante-six ", "soixante-sept ", "soixante-huit ", "soixante-neuf ")
Tb7 = Array("soixante-dix ", "soixante-et-onze ", "soixante-douze ", "soixante-treize ", "soixante-quatorze ", "soixante-quinze ", "soixante-seize ", "soixante-dix-sept ", "soixante-dix-huit ", "soixante-dix-neuf ")
Tb8 = Array("quatre-vingt ", "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 ")
Tb9 = Array("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 ")
C = Tranche \ 100
If C <> 0 Then
If TrCent And CenTouRon And C <> 1 Then
Lib = Lib & T00(C) & "cents "
Else
Lib = Lib & T00(C) & "cent "
End If
End If
D1 = Tranche Mod 100
D = D1 \ 10
U = Tranche Mod 10
Select Case D
Case 0: Lib = Lib & Tb0(U)
Case 1: Lib = Lib & Tb1(U)
Case 2: Lib = Lib & Tb2(U)
Case 3: Lib = Lib & Tb3(U)
Case 4: Lib = Lib & Tb4(U)
Case 5: Lib = Lib & Tb5(U)
Case 6: Lib = Lib & Tb6(U)
Case 7: Lib = Lib & Tb7(U)
Case 8: Lib = Lib & Tb8(U)
Case 9: Lib = Lib & Tb9(U)
End Select
End Sub
il suffit de recopier integralement la macro de mon fichier
ci joint fichier qui m'a été proposé par un des membres du site ...si tu es satisfait remercies le site