bonjour tous le monde et bonne et heureuse journée
j'ai trouver sur ce super site un code pour écrire un montant en toutes lettres (en dinars)
mais je crois ça fonctionne sauf si le montant est inférieur à un dinars
il donne "Sept cent soixante et onze" au lieu de "Sept cent soixante et onze millimes" ou bien : "zéro dinars et Sept cent soixante et onze millimes"
merci pour l'aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
Function lireCentaine(ByVal Montant As Double) As String
Dim ChiffreLettre
Dim Centaine As Double
Dim Dizaine As Double
Dim T As String
Dim Chaine As String
ChiffreLettre = Array("un", "deux", "trois", "quatre", "cinq", "six", _
                "sept", "huit", "neuf", "dix", _
                "onze", "douze", "treize", "quatorze", "quinze", _
                "seize", "dix-sept", "dix-huit", "dix-neuf")
Centaine = Int(Montant / 100)
Select Case Centaine
    Case 0
        Chaine = ""
    Case 1
        Chaine = "cent"
    Case Else
        Chaine = ChiffreLettre(Centaine - 1) & " cent"
End Select
Dizaine = Modulo(Montant, 100)
Select Case Dizaine
    Case 0
        T = ""
    Case 1 To 19
        T = ChiffreLettre(Dizaine - 1)
    Case 20
        T = "vingt"
    Case 21
        T = "vingt et un"
    Case 22 To 29
        T = "vingt " & ChiffreLettre(Dizaine - 21)
    Case 30
        T = "trente"
    Case 31
        T = "trente et un"
    Case 32 To 39
        T = "trente-" & ChiffreLettre(Dizaine - 31)
    Case 40
        T = "quarante"
    Case 41
        T = "quarante et un"
    Case 42 To 49
        T = "quarante-" & ChiffreLettre(Dizaine - 41)
    Case 50
        T = "cinquante"
    Case 51
        T = "cinquante et un"
    Case 52 To 59
        T = "cinquante-" & ChiffreLettre(Dizaine - 51)
    Case 60
        T = "soixante"
    Case 61
        T = "soixante et un"
    Case 62 To 69
        T = "soixante-" & ChiffreLettre(Dizaine - 61)
    Case 70
        T = "soixante-dix"
    Case 71
        T = "soixante et onze"
    Case 72 To 79
        T = "soixante-" & ChiffreLettre(Dizaine - 61)
    Case 80
        T = "quatre-vingts"
    Case 81 To 89
        T = "quatre-vingt " & ChiffreLettre(Dizaine - 81)
    Case 90 To 99
        T = "quatre-vingt " & ChiffreLettre(Dizaine - 81)
    Case Else
        T = "Erreur de conversion !"
End Select
If (Chaine & " " & T) = " " Then
    lireCentaine = ""
Else
    lireCentaine = LTrim(Chaine & " ") & T
End If
End Function
Function Modulo(ByVal Nombre As Double, ByVal Diviseur As Double) As Double
    Modulo = Nombre - (Diviseur * Int(Nombre / Diviseur))
End Function
Function Arrondir(ByVal ValeurArrondi As Double, ByVal NbreDeci As Integer) As Double
    Arrondir = ValeurArrondi + (5 * 100 ^ -(NbreDeci + 1))
    Arrondir = Int(Arrondir * 100 ^ NbreDeci) / 100 ^ NbreDeci
 
End Function
Function NbreLettres(ByVal Total As Double) As String
 
    Dim Millions As Double
    Dim Milliers As Double
    Dim cent As Double
    Dim decimales As Double
    Dim T0 As String
    Dim T1 As String
    Dim T2 As String
    Dim T3 As String
    Dim Resultat As String
    Dim T As String
    Dim S1, S2 As String
    Total = Arrondir(Total, 2)
    Millions = Int(Modulo(Int(Total / 1000000), 1000))
    Milliers = Int(Modulo(Int(Total / 1000), 1000))
    cent = Int(Modulo(Total, 1000))
    decimales = Arrondir((Modulo(Total * 1000, 1000)), 0)
    S1 = ""
    S2 = ""
    If cent <= 1 Then
        If Milliers < 1 Then
        Else
            S1 = "s"
        End If
    Else
        S1 = "s"
    End If
 
    If decimales <= 1 Then S2 = "" Else S2 = "s"
    T0 = lireCentaine(Millions)
    T1 = lireCentaine(Milliers)
    T2 = lireCentaine(cent)
    T3 = lireCentaine(decimales)
    If (T0 = "" And T1 = "" And T3 = "" And Right(T2, 5) = "cent ") Then
        If cent > 100 Then T2 = RTrim(T2) & "s"
    End If
    If T0 <> "" Then
        Resultat = T0 & " millions "
        If T1 = "" And T2 = "" And T3 = "" Then
            Resultat = T0 & " millions de dinars"
        End If
    Else
        Resultat = ""
    End If
    If T1 <> "" Then
        If T1 = "un" Then
            T1 = ""
        End If
        Resultat = Resultat & T1 & " mille "
    Else
        Resultat = Resultat & ""
    End If
    If T2 <> "" Then
        Resultat = Resultat & T2 & " dinars"
    Else
        If Resultat <> "" Then
            Resultat = Resultat
        End If
    End If
    If T3 <> "" Then
        If Resultat <> "" Then
            Resultat = Resultat & " et " & T3 & " millimes"
        Else
            Resultat = T3
        End If
    End If
    NbreLettres = Resultat
End Function