j'ai fait ca ya tres pas longtemp...
la fonction EuroToText(<montant>) retourne le <montant> en texte.
ex. MsgBox EuroToText("495")
Olivier.
---------------------
Private Function EuroToText(ByVal montant As Double) As String
pos = InStr(1, CStr(montant), ",")
If pos > 0 Then
lp = Mid$(CStr(montant), 1, pos - 1)
rp = Mid$(CStr(montant), pos + 1, Len(CStr(montant)) - pos + 1)
Else
lp = CStr(montant)
End If
Dim tmpStr As String
tmpStr = vbNullString
cent = lp - (Int(lp / 1000) * 1000)
mil = Int(lp / 1000)
If mil = 1 Then
tmpStr = "MILLE"
ElseIf mil > 1 Then
tmpStr = CentaineToText(mil) & " MILLE"
End If
If cent > 0 Then
tmpStr = Trim(tmpStr) & " " & CentaineToText(cent) & " €URO(S)"
End If
EuroToText = tmpStr
End Function
Private Function CentaineToText(ByVal montant As Integer) As String
cent = Int(montant / 100)
unit = montant - (cent * 100)
tmpStr = vbNullString
If cent > 0 Then
If cent > 1 Then tmpStr = val2str(cent)
If unit = 0 Then
tmpStr = tmpStr & " CENT"
Else
tmpStr = tmpStr & " CENTS"
End If
End If
tmpStr = tmpStr & " " & val2str(unit)
CentaineToText = tmpStr
End Function
Public Function val2str(ByVal value As Integer) As String
Select Case value
Case 0:
Case 1: tmpStr = "UN"
Case 2: tmpStr = "DEUX"
Case 3: tmpStr = "TROIS"
Case 4: tmpStr = "QUATRE"
Case 5: tmpStr = "CINQ"
Case 6: tmpStr = "SIX"
Case 7: tmpStr = "SEPT"
Case 8: tmpStr = "HUIT"
Case 9: tmpStr = "NEUF"
Case 10: tmpStr = "DIX"
Case 11: tmpStr = "ONZE"
Case 12: tmpStr = "DOUZE"
Case 13: tmpStr = "TREIZE"
Case 14: tmpStr = "QUATORZE"
Case 15: tmpStr = "QUINZE"
Case 16: tmpStr = "SEIZE"
Case 20: tmpStr = "VINGT"
Case 30: tmpStr = "TRENTE"
Case 40: tmpStr = "QUARANTE"
Case 50: tmpStr = "CINQUANTE"
Case 60: tmpStr = "SOIXANTE"
Case Is >= 90:
tmpStr = val2str(4) & "-" & val2str(20) & " " & val2str(value - 80)
Case Is >= 70:
tmpStr = val2str(60) & " " & val2str(value - 60)
Case Is > 16: '2x,3x,4x,5x,6x
diz = Int(value / 10) * 10
unit = value - diz
Select Case unit
Case 1
tmpStr = val2str(diz) & " ET UN"
Case Is > 1
tmpStr = val2str(diz) & " " & val2str(unit)
End Select
Case Is > 16:
tmpStr = val2str(10) & "-" & val2str(value - 10)
Case Else: tmpStr = vbullstring
End Select
val2str = tmpStr
End Function