Ce code permet de convertir une chaîne numérique en chaîne de caractère, et comme un exemple parles toujours beaucoup plus
on entre
Eppeler(1215457.14,euro)
et il nous donne
un million deux cent quinze mille quatre cent cinquante sept et quatorze.
la fonction eppeler(Nombre as Integer, [Symbol] as TSymbolEnum) TSymbolEnum admet quatre possibilité à vous de l'étendre par la suite : Euro, Dollars, Livre Sterling, Aucun
Cepandant les règles d'orthographes ne sont pas faites.
Source / Exemple :
Public Enum SymbolTmenu
Euro = 1
Dollar = 2
Livre_Sterling = 3
Sans = 4
End Enum
Function Eppeler(ByVal Nombre As Double, Optional Symbol As SymbolTmenu) As String
If IsMissing(Symbol) Then Symbol = 4
Dim NombreArg As Integer
Dim TampText As String
Dim PosSep As Integer
Dim LenEntiere As Integer
Dim TampTextTrip As String
Dim ChaîneEntiere As String
Dim LongeurChaîne As Integer
Dim Pointeur As Boolean
Dim USymbol As String
Dim DSymbol As String
Pointeur = False
Select Case Symbol
Case 1
USymbol = "euro "
DSymbol = "cent"
Case 2
USymbol = "dollars "
DSymbol = "cents"
Case 3
USymbol = "livre sterling "
DSymbol = "shilling"
Case 4
USymbol = ""
DSymbol = ""
End Select
ChaîneEntiere = ""
TampText = CStr(Nombre) 'Conversion du nombre en chaîne
PosSep = InStr(1, TampText, ",") 'definition de la position du separateur
If PosSep <> 0 Then TampText = Mid$(TampText, 1, PosSep - 1) 'extraction de la partie entière
GoTo Conversion
Décimal:
If PosSep = 0 Then
Eppeler = ChaîneEntiere
Exit Function
Else
ChaîneEntiere = ChaîneEntiere & "et "
TampText = Mid$(Nombre, PosSep + 1)
End If
Conversion:
'Conversion de la chaîne numérique entière en chaîne de caractères
LenEntiere = Len(TampText)
While (LenEntiere / 3) <> 0
If Len(TampText) / 3 = Int(Len(TampText) / 3) Then
LongeurChaîne = 3
Else
LongeurChaîne = Len(TampText) - Int(Len(TampText) / 3) * 3
End If
TampTextTrip = Mid$(TampText, 1, LongeurChaîne)
If TampTextTrip = "" Then TampTextTrip = TampText
Select Case Len(TampTextTrip)
Case 3
ChaîneEntiere = ChaîneEntiere & Centaine(Mid$(TampTextTrip, 1, 1)) & " cent "
If Mid$(TampTextTrip, 2, 1) = 1 Then
ChaîneEntiere = ChaîneEntiere & Particulier(Mid$(TampTextTrip, 2)) & " "
Else
ChaîneEntiere = ChaîneEntiere & Dizaine(Mid$(TampTextTrip, 2, 1)) & " "
ChaîneEntiere = ChaîneEntiere & Unité(Mid$(TampTextTrip, 3, 1)) & " "
End If
Case 2
If Mid$(TampTextTrip, 1, 1) = 1 Then
ChaîneEntiere = ChaîneEntiere & Particulier(TampTextTrip) & " "
Else
ChaîneEntiere = ChaîneEntiere & Dizaine(Mid$(TampTextTrip, 1, 1)) & " "
ChaîneEntiere = ChaîneEntiere & Unité(Mid$(TampTextTrip, 2, 1)) & " "
End If
Case 1
ChaîneEntiere = ChaîneEntiere & Unité(Mid$(TampTextTrip, 1, 1)) & " "
End Select
Select Case Round((LenEntiere / 3) + 1 / 3, 0)
Case 4
ChaîneEntiere = ChaîneEntiere & "milliard "
Case 3
ChaîneEntiere = ChaîneEntiere & "million "
Case 2
ChaîneEntiere = ChaîneEntiere & "mille "
End Select
TampText = Mid$(TampText, Len(TampTextTrip) + 1)
LenEntiere = Len(TampText)
Wend
If Pointeur = False Then
ChaîneEntiere = ChaîneEntiere & USymbol
Pointeur = True
GoTo Décimal
Else
ChaîneEntiere = ChaîneEntiere & DSymbol
Debug.Print ChaîneEntiere
End If
End Function
Function Unité(ByVal Chaîne As String) As String
Select Case Chaîne
Case "1"
Unité = "un"
Case "2"
Unité = "deux"
Case "3"
Unité = "trois"
Case "4"
Unité = "quatre"
Case "5"
Unité = "cinq"
Case "6"
Unité = "six"
Case "7"
Unité = "sept"
Case "8"
Unité = "huit"
Case "9"
Unité = "neuf"
Case "0"
Unité = "zéro"
End Select
End Function
Function Dizaine(ByVal Chaîne As String) As String
Select Case Chaîne
Case "1"
Dizaine = "dix"
Case "2"
Dizaine = "vingt"
Case "3"
Dizaine = "trente"
Case "4"
Dizaine = "quarante"
Case "5"
Dizaine = "cinquante"
Case "6"
Dizaine = "soixante"
Case "7"
Dizaine = "soixante-dix"
Case "8"
Dizaine = "quatre-vingt"
Case "9"
Dizaine = "quatre-vingt-dix"
Case "0"
Dizaine = ""
End Select
End Function
Function Centaine(ByVal Chaîne As String) As String
Select Case Chaîne
Case "1"
Centaine = ""
Case "2"
Centaine = "deux"
Case "3"
Centaine = "trois"
Case "4"
Centaine = "quatre"
Case "5"
Centaine = "cinq"
Case "6"
Centaine = "six"
Case "7"
Centaine = "sept"
Case "8"
Centaine = "huit"
Case "9"
Centaine = "neuf"
Case "0"
Centaine = ""
End Select
End Function
Function Particulier(ByVal Chaîne As String) As String
Select Case Chaîne
Case "10"
Particulier = "dix"
Case "11"
Particulier = "onze"
Case "12"
Particulier = "douze"
Case "13"
Particulier = "treize"
Case "14"
Particulier = "quatorze"
Case "15"
Particulier = "quinze"
Case "16"
Particulier = "seize"
Case "17"
Particulier = "dix-sept"
Case "18"
Particulier = "dix-huit"
Case "19"
Particulier = "dix-neuf"
End Select
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.