2 réponses
Salut,
J'ai crée 2 fonctions dans VBA :
ConversionNormale
ConversionDecimale
qui font la conversion des chiffres en lettres de façon suivante
ConversionNormale de 1 à 999.999
ConversionDecimale de 0,01 à 999.999,99
euro(s) et ajouté à la fin
Le code est assez long ( c'était mon début en VBA et dans la programmation) et je n'ai plus travaillé dessus. Peut-être tu vas trouver quelque chose plus simple.
Voilà le code:
======================================================
Option Explicit
Const cent = "cent"
Const cents = "cents"
Const mille = "mille"
Const euro = "euro"
Const euros = "euros"
Const centimes = "centimes"
Const zero = "zero"
Dim sConversionUnites As String
Dim sConversionDisaines As String
Dim sConversionCentaines As String
Dim sConversionApresUnites As String
Dim sMontant As String
Dim sMontantMille As String
Dim sMontantCentMille As String
Dim sDecimale As String
Public Sub Unites(sUnites As String)
Select Case sUnites
Case Is = 1
sConversionUnites = "un"
Case Is = 2
sConversionUnites = "deux"
Case Is = 3
sConversionUnites = "trois"
Case Is = 4
sConversionUnites = "quatre"
Case Is = 5
sConversionUnites = "cinq"
Case Is = 6
sConversionUnites = "six"
Case Is = 7
sConversionUnites = "sept"
Case Is = 8
sConversionUnites = "huit"
Case Is = 9
sConversionUnites = "neuf"
End Select
End Sub
Public Sub Disaines(sDisaines As String)
' Dim iLengthDisaines
' iLengthDisaines = 2
'iLengthDisaines = Len(sDisaines)
Select Case sDisaines
Case Is = 1
sConversionDisaines = "dix"
Case Is = 2
sConversionDisaines = "vingt"
Case Is = 3
sConversionDisaines = "trente"
Case Is = 4
sConversionDisaines = "quarante"
Case Is = 5
sConversionDisaines = "cinquante"
Case Is = 6
sConversionDisaines = "soixante"
Case Is = 7
sConversionDisaines = "soixante-dix"
Case Is = 8
sConversionDisaines = "quatre-vingt"
Case Is = 9
sConversionDisaines = "quatre-vingt-dix"
End Select
End Sub
Public Sub ApresUnites(sApresUnites As String)
Select Case sApresUnites
Case Is = 11
sConversionApresUnites = "onze"
Case Is = 12
sConversionApresUnites = "douze"
Case Is = 13
sConversionApresUnites = "treize"
Case Is = 14
sConversionApresUnites = "quatorze"
Case Is = 15
sConversionApresUnites = "quinze"
Case Is = 16
sConversionApresUnites = "seize"
Case Is = 17
sConversionApresUnites = "dix-sept"
Case Is = 18
sConversionApresUnites = "dix-huit"
Case Is = 19
sConversionApresUnites = "dix-neuf"
End Select
End Sub
Private Function conversion(sMontant As String)
Dim iLength As Integer
iLength = Len(sMontant)
Select Case iLength
Case Is = 1
Unites (sMontant)
conversion = sConversionUnites
Case Is = 2
If Right(sMontant, 1) = 0 Then
Disaines (Left(sMontant, 1))
conversion = sConversionDisaines
ElseIf Left(sMontant, 1) = 1 And Right(sMontant, 1) <> 0 Then
ApresUnites (sMontant)
conversion = sConversionApresUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) <= 6 And Right(sMontant, 1) <> 0 Then
Unites (Right(sMontant, 1))
Disaines (Left(sMontant, 1))
conversion = sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) = 7 And Right(sMontant, 1) <> 0 Then
Disaines (Left(sMontant, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = Left(sConversionDisaines, 8) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) = 8 And Right(sMontant, 1) <> 0 Then
Unites (Right(sMontant, 1))
Disaines (Left(sMontant, 1))
conversion = sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) = 9 And Right(sMontant, 1) <> 0 Then
Disaines (Left(sMontant, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = Left(sConversionDisaines, 12) & " " & sConversionApresUnites
End If
Case Is = 3
If Left(sMontant, 1) = 1 And Right(sMontant, 2) = 0 Then
conversion = cent
ElseIf Left(sMontant, 1) > 1 And Right(sMontant, 2) = 0 And Right(sMontant, 1) = 0 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent & "s"
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 0 Then
Unites (Right(sMontant, 1))
conversion = cent & " " & sConversionUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 1 And Right(sMontant, 1) <> 0 Then
ApresUnites (Mid(sMontant, 2, 2))
conversion = cent & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) <> 1 And Right(sMontant, 1) = 0 Then
Unites (Left(sMontant, 1))
Disaines (Mid(sMontant, 2, 1))
conversion = sConversionUnites & " " & cent & " " & sConversionDisaines
ElseIf Left(sMontant, 1) = 1 And Right(sMontant, 1) = 0 Then
'Unites (Left(sMontant, 1))
Disaines (Mid(sMontant, 2, 1))
conversion = cent & " " & sConversionDisaines
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) <= 6 Then
Disaines (Mid(sMontant, 2, 1))
Unites (Right(sMontant, 1))
conversion = cent & " " & sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 7 Then
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
'Unites (Right(sMontant, 1))
conversion = cent & " " & Left(sConversionDisaines, 8) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 8 Then
Disaines (Mid(sMontant, 2, 1))
Unites (Right(sMontant, 1))
conversion = cent & " " & sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 9 Then
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
'Unites (Right(sMontant, 1))
conversion = cent & " " & Left(sConversionDisaines, 12) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 0 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Unites (Right(sMontant, 1))
conversion = conversion & " " & sConversionUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 1 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
ApresUnites ("1" & Right(sMontant, 1))
conversion = conversion & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) <= 6 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
conversion = conversion & " " & sConversionDisaines
Unites (Right(sMontant, 1))
conversion = conversion & " " & sConversionUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 7 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = conversion & " " & Left(sConversionDisaines, 8) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 8 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
Unites (Right(sMontant, 1))
conversion = conversion & " " & sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 9 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = conversion & " " & Left(sConversionDisaines, 12) & " " & sConversionApresUnites
End If
End Select
End Function
Private Function ConversionMille(sMontantMille)
Dim sMontantUnites As String, sMontantDisaines As String, sMontantCentaines As String
Dim sMontantMilleConversion As String
Dim iLengthMille As Integer
Dim sConversionFunction As String
iLengthMille = Len(sMontantMille)
Dim sConversionMille As String
Select Case iLengthMille
Case Is = 4
If Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 Then
Unites (Left(sMontantMille, 1))
ConversionMille = sConversionUnites & " " & mille
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 Then
sMontantUnites = Right(sMontantMille, 1)
Unites (Left(sMontantMille, 1))
ConversionMille = sConversionUnites & " " & mille
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) > 0 Then
sMontantDisaines = Right(sMontantMille, 2)
Unites (Left(sMontantMille, 1))
ConversionMille = ""
ConversionMille = sConversionUnites & " " & mille
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) > 0 Then
sMontantCentaines = Right(sMontantMille, 3)
Unites (Left(sMontantMille, 1))
ConversionMille = ""
ConversionMille = sConversionUnites & " " & mille
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
End If
Case Is = 5
If Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) = 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
ElseIf Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) = 0 Then
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) > 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
sMontantUnites = Right(sMontantMille, 1)
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) > 0 And Mid(sMontantMille, 5, 1) >= 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
sMontantDisaines = Right(sMontantMille, 2)
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) > 0 _
And Mid(sMontantMille, 4, 1) >= 0 And Mid(sMontantMille, 5, 1) >= 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
sMontantCentaines = Right(sMontantMille, 3)
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) = 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) > 0 Then
ApresUnites ("1" & Mid(sMontantMille, 2, 1))
ConversionMille = sConversionApresUnites & " " & mille
sMontantUnites = (Right(sMontantMille, 1))
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) = 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) > 0 And Mid(sMontantMille, 5, 1) >= 0 Then
ApresUnites ("1" & Mid(sMontantMille, 2, 1))
ConversionMille = sConversionApresUnites & " " & mille
sMontantDisaines = (Right(sMontantMille, 2))
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) = 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) > 0 _
And Mid(sMontantMille, 4, 1) >= 0 And Mid(sMontantMille, 5, 1) >= 0 Then
ApresUnites ("1" & Mid(sMontantMille, 2, 1))
ConversionMille = sConversionApresUnites & " " & mille
sMontantCentaines = Right(sMontantMille, 3)
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) > 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) > 0 Then
'Disaines (Left(sMontantMille, 1))
'Unites (Mid(sMontantMille, 2, 1))
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
sMontantUnites = Right(sMontantMille, 1)
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) > 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) > 0 And Mid(sMontantMille, 5, 1) >= 0 Then
'Disaines (Left(sMontantMille, 1))
'Unites (Mid(sMontantMille, 2, 1))
'ConversionMille = sConversionDisaines & " " & sConversionUnites & " " & mille
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
sMontantDisaines = Right(sMontantMille, 2)
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) > 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) > 0 _
And Mid(sMontantMille, 4, 1) >= 0 And Mid(sMontantMille, 5, 1) >= 0 Then
'Disaines (Left(sMontantMille, 1))
' Unites (Mid(sMontantMille, 2, 1))
'ConversionMille = sConversionDisaines & " " & sConversionUnites & " " & mille
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
sMontantCentaines = Right(sMontantMille, 3)
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
End If
End Select
End Function
Private Function ConversionCentMille(sMontantCentMille As String)
Dim sConversionCentMille As String
Dim iLengthCentMille As Integer
iLengthCentMille = Len(sMontantCentMille)
If iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) > 0 Then
If Left(sMontantCentMille, 1) = 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 5))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
Else
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 5))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
End If
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Left(sMontantCentMille, 1) = 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 4))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Mid(sMontantCentMille, 4, 1) = 0 And Mid(sMontantCentMille, 5, 1) = 0 And _
Mid(sMontantCentMille, 6, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Mid(sMontantCentMille, 4, 1) = 0 And Mid(sMontantCentMille, 5, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
sConversionCentMille = conversion(Right(sMontantCentMille, 1))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Mid(sMontantCentMille, 4, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
sConversionCentMille = conversion(Right(sMontantCentMille, 2))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
sConversionCentMille = conversion(Right(sMontantCentMille, 3))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 4))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
End If
End Function
Public Function ConversionDecimale(sMontantDecimale As String)
Dim sMontantEntier As String, sVirgule As String, sDecimale As String
Dim iLengthMontantEntier As Integer, iLengthDecimale As Integer
sMontantEntier = Left(sMontantDecimale, InStr(1, sMontantDecimale, ",", vbTextCompare) - 1)
'sVirgule = Mid(sMontantDecimale, Len(sMontantDecimale) - 3, 1)
sDecimale = Right(sMontantDecimale, Len(sMontantDecimale) - InStr(1, sMontantDecimale, ",", vbTextCompare))
iLengthMontantEntier = Len(sMontantEntier)
iLengthDecimale = Len(sDecimale)
If iLengthDecimale = 1 Then
Disaines (sDecimale)
'ConversionDecimale = sConversionDisaines
Select Case iLengthMontantEntier
Case Is = 1
If sMontantEntier = 0 Then
ConversionDecimale = sConversionDisaines & " " & centimes
ElseIf sMontantEntier > 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
sConversionDisaines & " " & centimes
End If
Case Is = 2
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 3
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 4
ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 5
ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 6
ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
End Select
ElseIf iLengthDecimale = 2 Then
Select Case iLengthMontantEntier
Case Is = 1
If sMontantEntier = 0 Then
If Left(sDecimale, 1) = 0 Then
Unites (Right(sDecimale, 1))
ConversionDecimale = sConversionUnites & " " & centimes
Else
ConversionDecimale = conversion(sDecimale) & " " & centimes
End If
ElseIf sMontantEntier > 0 And Left(sDecimale, 1) = 0 Then
Unites (Right(sDecimale, 1))
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
conversion(Right(sDecimale, 1)) & " " & centimes
ElseIf sMontantEntier > 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
conversion(sDecimale) & " " & centimes
End If
Case Is = 2
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 3
'ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 4
'ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 5
'ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 6
'ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
End Select
End If
End Function
Public Function ConversionNormale(sMontantNormal As String)
Dim iLengthMontantNormal As Integer
iLengthMontantNormal = Len(sMontantNormal)
Select Case iLengthMontantNormal
Case Is = 0
ConversionNormale = ""
Case 1 To 3
ConversionNormale = conversion(sMontantNormal) & " " & euros
Case Is <= 5
ConversionNormale = ConversionMille(sMontantNormal) & " " & euros
Case Is = 6
ConversionNormale = ConversionCentMille(sMontantNormal) & " " & euros
End Select
End Function
==============================================================
A+
J'ai crée 2 fonctions dans VBA :
ConversionNormale
ConversionDecimale
qui font la conversion des chiffres en lettres de façon suivante
ConversionNormale de 1 à 999.999
ConversionDecimale de 0,01 à 999.999,99
euro(s) et ajouté à la fin
Le code est assez long ( c'était mon début en VBA et dans la programmation) et je n'ai plus travaillé dessus. Peut-être tu vas trouver quelque chose plus simple.
Voilà le code:
======================================================
Option Explicit
Const cent = "cent"
Const cents = "cents"
Const mille = "mille"
Const euro = "euro"
Const euros = "euros"
Const centimes = "centimes"
Const zero = "zero"
Dim sConversionUnites As String
Dim sConversionDisaines As String
Dim sConversionCentaines As String
Dim sConversionApresUnites As String
Dim sMontant As String
Dim sMontantMille As String
Dim sMontantCentMille As String
Dim sDecimale As String
Public Sub Unites(sUnites As String)
Select Case sUnites
Case Is = 1
sConversionUnites = "un"
Case Is = 2
sConversionUnites = "deux"
Case Is = 3
sConversionUnites = "trois"
Case Is = 4
sConversionUnites = "quatre"
Case Is = 5
sConversionUnites = "cinq"
Case Is = 6
sConversionUnites = "six"
Case Is = 7
sConversionUnites = "sept"
Case Is = 8
sConversionUnites = "huit"
Case Is = 9
sConversionUnites = "neuf"
End Select
End Sub
Public Sub Disaines(sDisaines As String)
' Dim iLengthDisaines
' iLengthDisaines = 2
'iLengthDisaines = Len(sDisaines)
Select Case sDisaines
Case Is = 1
sConversionDisaines = "dix"
Case Is = 2
sConversionDisaines = "vingt"
Case Is = 3
sConversionDisaines = "trente"
Case Is = 4
sConversionDisaines = "quarante"
Case Is = 5
sConversionDisaines = "cinquante"
Case Is = 6
sConversionDisaines = "soixante"
Case Is = 7
sConversionDisaines = "soixante-dix"
Case Is = 8
sConversionDisaines = "quatre-vingt"
Case Is = 9
sConversionDisaines = "quatre-vingt-dix"
End Select
End Sub
Public Sub ApresUnites(sApresUnites As String)
Select Case sApresUnites
Case Is = 11
sConversionApresUnites = "onze"
Case Is = 12
sConversionApresUnites = "douze"
Case Is = 13
sConversionApresUnites = "treize"
Case Is = 14
sConversionApresUnites = "quatorze"
Case Is = 15
sConversionApresUnites = "quinze"
Case Is = 16
sConversionApresUnites = "seize"
Case Is = 17
sConversionApresUnites = "dix-sept"
Case Is = 18
sConversionApresUnites = "dix-huit"
Case Is = 19
sConversionApresUnites = "dix-neuf"
End Select
End Sub
Private Function conversion(sMontant As String)
Dim iLength As Integer
iLength = Len(sMontant)
Select Case iLength
Case Is = 1
Unites (sMontant)
conversion = sConversionUnites
Case Is = 2
If Right(sMontant, 1) = 0 Then
Disaines (Left(sMontant, 1))
conversion = sConversionDisaines
ElseIf Left(sMontant, 1) = 1 And Right(sMontant, 1) <> 0 Then
ApresUnites (sMontant)
conversion = sConversionApresUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) <= 6 And Right(sMontant, 1) <> 0 Then
Unites (Right(sMontant, 1))
Disaines (Left(sMontant, 1))
conversion = sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) = 7 And Right(sMontant, 1) <> 0 Then
Disaines (Left(sMontant, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = Left(sConversionDisaines, 8) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) = 8 And Right(sMontant, 1) <> 0 Then
Unites (Right(sMontant, 1))
Disaines (Left(sMontant, 1))
conversion = sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) <> 0 And Left(sMontant, 1) = 9 And Right(sMontant, 1) <> 0 Then
Disaines (Left(sMontant, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = Left(sConversionDisaines, 12) & " " & sConversionApresUnites
End If
Case Is = 3
If Left(sMontant, 1) = 1 And Right(sMontant, 2) = 0 Then
conversion = cent
ElseIf Left(sMontant, 1) > 1 And Right(sMontant, 2) = 0 And Right(sMontant, 1) = 0 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent & "s"
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 0 Then
Unites (Right(sMontant, 1))
conversion = cent & " " & sConversionUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 1 And Right(sMontant, 1) <> 0 Then
ApresUnites (Mid(sMontant, 2, 2))
conversion = cent & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) <> 1 And Right(sMontant, 1) = 0 Then
Unites (Left(sMontant, 1))
Disaines (Mid(sMontant, 2, 1))
conversion = sConversionUnites & " " & cent & " " & sConversionDisaines
ElseIf Left(sMontant, 1) = 1 And Right(sMontant, 1) = 0 Then
'Unites (Left(sMontant, 1))
Disaines (Mid(sMontant, 2, 1))
conversion = cent & " " & sConversionDisaines
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) <= 6 Then
Disaines (Mid(sMontant, 2, 1))
Unites (Right(sMontant, 1))
conversion = cent & " " & sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 7 Then
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
'Unites (Right(sMontant, 1))
conversion = cent & " " & Left(sConversionDisaines, 8) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 8 Then
Disaines (Mid(sMontant, 2, 1))
Unites (Right(sMontant, 1))
conversion = cent & " " & sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) = 1 And Mid(sMontant, 2, 1) = 9 Then
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
'Unites (Right(sMontant, 1))
conversion = cent & " " & Left(sConversionDisaines, 12) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 0 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Unites (Right(sMontant, 1))
conversion = conversion & " " & sConversionUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 1 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
ApresUnites ("1" & Right(sMontant, 1))
conversion = conversion & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) <= 6 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
conversion = conversion & " " & sConversionDisaines
Unites (Right(sMontant, 1))
conversion = conversion & " " & sConversionUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 7 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = conversion & " " & Left(sConversionDisaines, 8) & " " & sConversionApresUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 8 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
Unites (Right(sMontant, 1))
conversion = conversion & " " & sConversionDisaines & " " & sConversionUnites
ElseIf Left(sMontant, 1) > 1 And Mid(sMontant, 2, 1) = 9 Then
Unites (Left(sMontant, 1))
conversion = sConversionUnites & " " & cent
Disaines (Mid(sMontant, 2, 1))
ApresUnites ("1" & Right(sMontant, 1))
conversion = conversion & " " & Left(sConversionDisaines, 12) & " " & sConversionApresUnites
End If
End Select
End Function
Private Function ConversionMille(sMontantMille)
Dim sMontantUnites As String, sMontantDisaines As String, sMontantCentaines As String
Dim sMontantMilleConversion As String
Dim iLengthMille As Integer
Dim sConversionFunction As String
iLengthMille = Len(sMontantMille)
Dim sConversionMille As String
Select Case iLengthMille
Case Is = 4
If Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 Then
Unites (Left(sMontantMille, 1))
ConversionMille = sConversionUnites & " " & mille
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 Then
sMontantUnites = Right(sMontantMille, 1)
Unites (Left(sMontantMille, 1))
ConversionMille = sConversionUnites & " " & mille
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) > 0 Then
sMontantDisaines = Right(sMontantMille, 2)
Unites (Left(sMontantMille, 1))
ConversionMille = ""
ConversionMille = sConversionUnites & " " & mille
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) > 0 Then
sMontantCentaines = Right(sMontantMille, 3)
Unites (Left(sMontantMille, 1))
ConversionMille = ""
ConversionMille = sConversionUnites & " " & mille
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
End If
Case Is = 5
If Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) = 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
ElseIf Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) = 0 Then
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) > 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
sMontantUnites = Right(sMontantMille, 1)
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) > 0 And Mid(sMontantMille, 5, 1) >= 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
sMontantDisaines = Right(sMontantMille, 2)
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Mid(sMontantMille, 2, 1) = 0 And Mid(sMontantMille, 3, 1) > 0 _
And Mid(sMontantMille, 4, 1) >= 0 And Mid(sMontantMille, 5, 1) >= 0 Then
Disaines (Left(sMontantMille, 1))
ConversionMille = sConversionDisaines & " " & mille
sMontantCentaines = Right(sMontantMille, 3)
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) = 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) > 0 Then
ApresUnites ("1" & Mid(sMontantMille, 2, 1))
ConversionMille = sConversionApresUnites & " " & mille
sMontantUnites = (Right(sMontantMille, 1))
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) = 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) > 0 And Mid(sMontantMille, 5, 1) >= 0 Then
ApresUnites ("1" & Mid(sMontantMille, 2, 1))
ConversionMille = sConversionApresUnites & " " & mille
sMontantDisaines = (Right(sMontantMille, 2))
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) = 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) > 0 _
And Mid(sMontantMille, 4, 1) >= 0 And Mid(sMontantMille, 5, 1) >= 0 Then
ApresUnites ("1" & Mid(sMontantMille, 2, 1))
ConversionMille = sConversionApresUnites & " " & mille
sMontantCentaines = Right(sMontantMille, 3)
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) > 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) = 0 And Mid(sMontantMille, 5, 1) > 0 Then
'Disaines (Left(sMontantMille, 1))
'Unites (Mid(sMontantMille, 2, 1))
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
sMontantUnites = Right(sMontantMille, 1)
sConversionFunction = conversion(sMontantUnites)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) > 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) = 0 _
And Mid(sMontantMille, 4, 1) > 0 And Mid(sMontantMille, 5, 1) >= 0 Then
'Disaines (Left(sMontantMille, 1))
'Unites (Mid(sMontantMille, 2, 1))
'ConversionMille = sConversionDisaines & " " & sConversionUnites & " " & mille
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
sMontantDisaines = Right(sMontantMille, 2)
sConversionFunction = conversion(sMontantDisaines)
ConversionMille = ConversionMille & " " & sConversionFunction
ElseIf Left(sMontantMille, 1) > 1 And Mid(sMontantMille, 2, 1) > 0 And Mid(sMontantMille, 3, 1) > 0 _
And Mid(sMontantMille, 4, 1) >= 0 And Mid(sMontantMille, 5, 1) >= 0 Then
'Disaines (Left(sMontantMille, 1))
' Unites (Mid(sMontantMille, 2, 1))
'ConversionMille = sConversionDisaines & " " & sConversionUnites & " " & mille
sMontantMilleConversion = Left(sMontantMille, 2)
sConversionMille = conversion(sMontantMilleConversion)
ConversionMille = sConversionMille & " " & mille
sMontantCentaines = Right(sMontantMille, 3)
sConversionFunction = conversion(sMontantCentaines)
ConversionMille = ConversionMille & " " & sConversionFunction
End If
End Select
End Function
Private Function ConversionCentMille(sMontantCentMille As String)
Dim sConversionCentMille As String
Dim iLengthCentMille As Integer
iLengthCentMille = Len(sMontantCentMille)
If iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) > 0 Then
If Left(sMontantCentMille, 1) = 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 5))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
Else
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 5))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
End If
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Left(sMontantCentMille, 1) = 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 4))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Mid(sMontantCentMille, 4, 1) = 0 And Mid(sMontantCentMille, 5, 1) = 0 And _
Mid(sMontantCentMille, 6, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Mid(sMontantCentMille, 4, 1) = 0 And Mid(sMontantCentMille, 5, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
sConversionCentMille = conversion(Right(sMontantCentMille, 1))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Mid(sMontantCentMille, 4, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
sConversionCentMille = conversion(Right(sMontantCentMille, 2))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Mid(sMontantCentMille, 3, 1) = 0 And _
Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent & " " & mille
sConversionCentMille = conversion(Right(sMontantCentMille, 3))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
ElseIf iLengthCentMille = 6 And Mid(sMontantCentMille, 2, 1) = 0 And Left(sMontantCentMille, 1) > 1 Then
Unites (Left(sMontantCentMille, 1))
ConversionCentMille = sConversionUnites & " " & cent
sConversionCentMille = ConversionMille(Right(sMontantCentMille, 4))
ConversionCentMille = ConversionCentMille & " " & sConversionCentMille
End If
End Function
Public Function ConversionDecimale(sMontantDecimale As String)
Dim sMontantEntier As String, sVirgule As String, sDecimale As String
Dim iLengthMontantEntier As Integer, iLengthDecimale As Integer
sMontantEntier = Left(sMontantDecimale, InStr(1, sMontantDecimale, ",", vbTextCompare) - 1)
'sVirgule = Mid(sMontantDecimale, Len(sMontantDecimale) - 3, 1)
sDecimale = Right(sMontantDecimale, Len(sMontantDecimale) - InStr(1, sMontantDecimale, ",", vbTextCompare))
iLengthMontantEntier = Len(sMontantEntier)
iLengthDecimale = Len(sDecimale)
If iLengthDecimale = 1 Then
Disaines (sDecimale)
'ConversionDecimale = sConversionDisaines
Select Case iLengthMontantEntier
Case Is = 1
If sMontantEntier = 0 Then
ConversionDecimale = sConversionDisaines & " " & centimes
ElseIf sMontantEntier > 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
sConversionDisaines & " " & centimes
End If
Case Is = 2
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 3
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 4
ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 5
ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
Case Is = 6
ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & euros & " et "
Disaines (sDecimale)
ConversionDecimale = ConversionDecimale & sConversionDisaines & " " & centimes
End Select
ElseIf iLengthDecimale = 2 Then
Select Case iLengthMontantEntier
Case Is = 1
If sMontantEntier = 0 Then
If Left(sDecimale, 1) = 0 Then
Unites (Right(sDecimale, 1))
ConversionDecimale = sConversionUnites & " " & centimes
Else
ConversionDecimale = conversion(sDecimale) & " " & centimes
End If
ElseIf sMontantEntier > 0 And Left(sDecimale, 1) = 0 Then
Unites (Right(sDecimale, 1))
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
conversion(Right(sDecimale, 1)) & " " & centimes
ElseIf sMontantEntier > 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
conversion(sDecimale) & " " & centimes
End If
Case Is = 2
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 3
'ConversionDecimale = conversion(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = conversion(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 4
'ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 5
'ConversionDecimale = ConversionMille(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = ConversionMille(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
Case Is = 6
'ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & euros & " et " & _
'conversion(sDecimale) & " " & centimes
If Left(sDecimale, 1) = 0 Then
ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & _
euros & " et " & conversion(Right(sDecimale, 1)) & " " & centimes
Else
ConversionDecimale = ConversionCentMille(sMontantEntier) & " " & _
euros & " et " & conversion(sDecimale) & " " & centimes
End If
End Select
End If
End Function
Public Function ConversionNormale(sMontantNormal As String)
Dim iLengthMontantNormal As Integer
iLengthMontantNormal = Len(sMontantNormal)
Select Case iLengthMontantNormal
Case Is = 0
ConversionNormale = ""
Case 1 To 3
ConversionNormale = conversion(sMontantNormal) & " " & euros
Case Is <= 5
ConversionNormale = ConversionMille(sMontantNormal) & " " & euros
Case Is = 6
ConversionNormale = ConversionCentMille(sMontantNormal) & " " & euros
End Select
End Function
==============================================================
A+
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 527
19 avril 2005 à 07:59
19 avril 2005 à 07:59
Bonjour,
Je propose également la fonction ci-dessous :
Elle admet deux paramètres supplémentaires :
- choix de la monnaie (euro par défaut)
- résultat en majuscules ou minuscules (majuscules par défaut)
Si A1 contient 23.56,
CHIFLETR(A1) : VINGT-TROIS EUROS ET CINQUANTE-SIX CENTIMES
CHIFLETR(A1;"dollar") : VINGT-TROIS DOLLARS ET CINQUANTE-SIX CENTIMES
CHIFLETR(A1;;FAUX) : vingt-trois euros et cinquante-six centimes
Voici le code :
Je propose également la fonction ci-dessous :
Elle admet deux paramètres supplémentaires :
- choix de la monnaie (euro par défaut)
- résultat en majuscules ou minuscules (majuscules par défaut)
Si A1 contient 23.56,
CHIFLETR(A1) : VINGT-TROIS EUROS ET CINQUANTE-SIX CENTIMES
CHIFLETR(A1;"dollar") : VINGT-TROIS DOLLARS ET CINQUANTE-SIX CENTIMES
CHIFLETR(A1;;FAUX) : vingt-trois euros et cinquante-six centimes
Voici le code :
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