Une petite fonction simlpe pour transformer un chiffre en lettre.
Exemple:
"15193" >> dix mille cent quatre vingt treize
Je me suis arreté au milliard et j'ai pas mis les pluriels pour cent, mille etc...
Je poste cette fonction car cela a été demandé sur l'irc.
Source / Exemple :
Function ChiffreToLettre(Chiffre As String) As String
Do Until Chiffre = ""
Select Case Int((Len(Chiffre) - 1) / 3)
Case 0: ext$ = ""
Case 1: ext$ = "Mille "
Case 2: ext$ = "Million "
Case 3: ext$ = "Milliard "
End Select
k = Len(Chiffre) Mod 3
If k = 0 Then k = 3
b$ = Left$(Chiffre, k)
For i = 1 To k
b1$ = Mid$(b$, i, 1)
If (k - i + 1) <> 2 Then
Select Case b1$
Case "1": Result$ = Result$
If i <> 1 Or Len(b$) <> 3 Then
Result$ = Result$ + "Un "
End If
Case "2": Result$ = Result$ + "Deux "
Case "3": Result$ = Result$ + "Trois "
Case "4": Result$ = Result$ + "Quatre "
Case "5": Result$ = Result$ + "Cinq "
Case "6": Result$ = Result$ + "Six "
Case "7": Result$ = Result$ + "Sept "
Case "8": Result$ = Result$ + "Huit "
Case "9": Result$ = Result$ + "Neuf "
Case "10": Result$ = Result$ + "Dix "
End Select
Else
Select Case b1$
Case "1": Result$ = Result$
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "Onze "
i = i + 1
Case "2": Result$ = Result$ + "Douze "
i = i + 1
Case "3": Result$ = Result$ + "Treize "
i = i + 1
Case "4": Result$ = Result$ + "Quatorze "
i = i + 1
Case "5": Result$ = Result$ + "Quinze "
i = i + 1
Case "6": Result$ = Result$ + "Seize "
i = i + 1
Case Else: Result$ = Result$ + "Dix "
End Select
Case "2": Result$ = Result$ + "Vingt "
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "et "
End Select
Case "3": Result$ = Result$ + "Trente "
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "et "
End Select
Case "4": Result$ = Result$ + "Quarate "
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "et "
End Select
Case "5": Result$ = Result$ + "Cinquante "
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "et "
End Select
Case "6": Result$ = Result$ + "Soixante "
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "et "
End Select
Case "7": Result$ = Result$
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "Soixante et Onze "
i = i + 1
Case "2": Result$ = Result$ + "Soixante Douze "
i = i + 1
Case "3": Result$ = Result$ + "Soixante Treize "
i = i + 1
Case "4": Result$ = Result$ + "Soixante Quatorze "
i = i + 1
Case "5": Result$ = Result$ + "Soixante Quinze "
i = i + 1
Case "6": Result$ = Result$ + "Soixante Seize "
i = i + 1
Case Else: Result$ = Result$ + "Soixante dix"
End Select
Case "8": Result$ = Result$ + "Quatre ving "
Case "9": Result$ = Result$
Select Case (Mid$(b$, i + 1, 1))
Case "1": Result$ = Result$ + "Quatre Vingt Onze "
i = i + 1
Case "2": Result$ = Result$ + "Quatre Vingt Douze "
i = i + 1
Case "3": Result$ = Result$ + "Quatre Vingt Treize "
i = i + 1
Case "4": Result$ = Result$ + "Quatre Vingt Quatorze "
i = i + 1
Case "5": Result$ = Result$ + "Quatre Vingt Quinze "
i = i + 1
Case "6": Result$ = Result$ + "Quatre Vingt Seize "
i = i + 1
Case Else: Result$ = Result$ + "Quatre Vingt Dix"
End Select
End Select
End If
If k = 3 And i = 1 Then Result$ = Result$ + "Cent "
Next i
Result$ = Result$ + ext$
Chiffre = Right$(Chiffre, Len(Chiffre) - k)
Loop
ChiffreToLettre = Result$
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.