Convertir les chiffres en lettre

Soyez le premier à donner votre avis sur cette source.

Vue 37 574 fois - Téléchargée 1 789 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

flong1981
Messages postés
2
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
26 avril 2013
-
bonjours.

comment dois je faire pour appliquer ce code?

j'ai une Excell avec plus de 200 Prix en chiffre a convertir en lettre.

Helpme please
cs_drissou
Messages postés
160
Date d'inscription
dimanche 7 décembre 2003
Statut
Membre
Dernière intervention
14 janvier 2009
-
Bonjour,
il y a aussi des fautes de syntaxe dans ta méthode :
- entre les dizaines et les unités, il y a souvent un tiret sauf si l'unité est 1 : exemples
21 : vingt et un
22 : vingt-deux

- pour les centaines : cent est avec un s s'il n'est pas suivi d'autres chiffres; exemple

600 : six cents
601 : six cent un

- pour millions et milliards, comment gères tu le pluriel ?

Driss
cs_yoman64
Messages postés
593
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
4 décembre 2008
-
C'est peut-etre la 64537 sources de ce genre lol.
Je n'aime pas sa critiqué , mais la avant de posté regarder si elle est déja présente sur le site ...
jrbleboss
Messages postés
480
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
3 septembre 2007
-
Ca peut etre pratique.

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.