Bonjour,
Mon code sert à convertir les chiffres en lettre.
J?ai prix le montant d?une facture par exemple, mettre ce code dans votre module
Et l?appeler a chaque fois.
Dans mon cas j?ai traité ma monnaie c?est le dinars mais
Chacun changera ce qu?il voudra
Bon courage
Source / Exemple :
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
If Shift = 0 Then
KeyCode = 0
SendKeys "{TAB}"
Else
KeyCode = 0
SendKeys "+{TAB}"
End If
End If
End Sub
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
Private Sub calcul_Click()
Dim affiche
affiche = Text1.Text
Dim i, j, k, point As Integer
Dim parts As Variant
Dim part, chaine, unite, centaine, dizaine, centimes As String
Dim lettres As Variant
Dim unites As Variant
Dim dizaines As Variant
Dim centaines As Variant
point = InStr(1, Text1, ".")
If point > 0 Then
Text1 = Text1 + "0"
centimes = Mid(Text1, point + 1, 2)
Text1 = Mid(Text1, 1, point - 1)
i = point - 1
Else
centimes = ""
i = Len(Text1)
End If
If i Mod 3 > 0 Then
k = Int(i / 3) + 1
Else
k = Int(i / 3)
End If
j = k * 3
If i < j Then
Text1 = Space(j - i) + Text1
End If
i = Len(Text1)
ReDim parts(k)
lettres = Array("", "", "mille", "million", "milliard", "billion")
unites = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", "dix huit", "dix neuf")
dizaines = Array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante dix", "quatre vingt", "quatre vingt dix")
centaines = Array("", "cent", "deux cents", "trois cents", "quatre cents", "cinq cents", "six cents", "sept cents", "huit cents", "neuf cents")
For j = 1 To k ' k=nombre de groupes de 3 chiffres
parts(j) = Mid(Text1, i - 3 * j + 1, 3)
Next j
chaine = ""
For j = 1 To k ' traitement des parties
part = parts(j)
unite = Mid(part, 3, 1)
dizaine = Mid(part, 2, 1)
centaine = Mid(part, 1, 1)
If dizaine = "1" Or dizaine = "7" Or dizaine = "9" Then
dizaine = Str(Val(dizaine) - 1)
unite = Str(Val(unite) + 10)
End If
chaine = centaines(Val(centaine)) + " " + dizaines(Val(dizaine)) + " " + unites(Val(unite))
parts(j) = chaine
Next j
chaine = ""
' traitement des centimes
If Len(centimes) > 0 Then
For j = 1 To 2
chaine = ""
unite = Mid(centimes, 2, 1)
dizaine = Mid(centimes, 1, 1)
If dizaine = "1" Or dizaine = "7" Or dizaine = "9" Then
dizaine = Str(Val(dizaine) - 1)
unite = Str(Val(unite) + 10)
End If
chaine = " et " + StrConv(dizaines(Val(dizaine)) + " " + unites(Val(unite)) + " Cts", vbProperCase)
Next
End If
For j = k To 1 Step -1
If LTrim(RTrim(parts(j))) <> "" Then
part = parts(j)
If j = 2 And LTrim(RTrim(part)) = "un" Then part = ""
somlet = somlet + " " + StrConv(part + " " + lettres(j), vbProperCase)
End If
Next j
somlet = somlet + "Dinars" + chaine
Text1.Text = affiche ' Pour maintenir l'affichage bon
Label2.Caption = somlet
End Sub
Conclusion :
Ne pas oublie que la separation avec les centimes c'est le point non pas la virgule
exemple :
5263.63 non pas 5263,63
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.