Transformation de chiffre en lettre

tacha84 Messages postés 60 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
je veux savoir comment faire un programme qui permet de transformer les chiffres en lettres.par exemple si j'ai un montant en chiffre,je peux l'afficher en toute lettre.le programme soit en vb,java ou c++.
merci bien
Configuration: Windows XP
Firefox 2.0

6 réponses

  1. tacha84 Messages postés 60 Statut Membre 6
     
    par exemple si j'ai 435 il m'affiche quatre cent trent cinq,car je veux l'utilisé avec excel dans les factures.et svp je veux un programmes complet car je sais pas comment faire.merci
    5
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    bonjour,

    J'ai trouvé ça si ça peut d'aider:

    =========================================

    Public Function sommelettre(ByVal argument As Currency) As String
    Dim entier As Double
    Dim cts As Double

    Dim resultat1 As String
    Dim resultat2 As String

    entier = Int(argument) ' Valeur entière
    cts = (argument - entier) * 100 ' Valeur Centimes

    resultat1 = somlet2(entier)
    resultat2 = somlet2(cts)

    If Trim(resultat1) <> "" Then
    resultat1 = resultat1 & " Euros "
    End If
    If Trim(resultat2) <> "" Then
    resultat2 = resultat2 & " Cts"
    End If

    If resultat2 <> "" Then
    sommelettre = resultat1 & " et " & resultat2
    Else
    sommelettre = resultat1
    End If

    End Function
    '*************************************************************
    ' Fonction de conversion chiffres en lettres
    '*************************************************************
    Public Function somlet2(ByVal argument As Double) As String

    Dim lettres As Variant
    Dim unites As Variant
    Dim dizaines As Variant
    Dim centaines As Variant

    Dim unite As Integer
    Dim dix As Integer
    Dim cent As Integer

    Dim groupes As Variant
    Dim chaine As String
    Dim ng, nc As Integer
    Dim i, j, k As Integer
    Dim xx As String

    chaine = Trim(Str(argument))
    nc = Len(chaine) ' Nbre de chiffres

    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")

    If argument = 0 Then
    somlet2 = ""
    Else
    If nc Mod 3 > 0 Then
    ng = Int(nc / 3) + 1 ' Nbre de groupes
    Else
    ng = nc / 3
    End If
    ReDim groupes(ng - 1)
    chaine = String(ng * 3 - nc, " ") & chaine
    nc = Len(chaine)
    j = 0
    For i = nc To 1 Step -3
    xx = Mid(chaine, i - 2, i)
    groupes(j) = xx
    j = j + 1
    Next
    chaine = ""
    For j = 0 To UBound(groupes)
    unite = Val(Mid(groupes(j), 3, 1))
    dix = Val(Mid(groupes(j), 2, 1))
    If dix = 1 Or dix = 7 Or dix = 9 Then
    dix = dix - 1
    unite = unite + 10
    End If
    cent = Val(Mid(groupes(j), 1, 1))
    chaine = centaines(cent) & " " & dizaines(dix) & " " & unites(unite) & " " & lettres(j) & " " & chaine
    Next
    somlet2 = chaine
    End If
    End Function
    =========================================

    le code n'est pas de moi, je viens de le trouver sur ce site, je l'ai un peu modifier .... un forum ne sert pas qu'à poser son blème, il permet aussi de trouver la solution, si on se donne la peine de chercher bien sûr ...

    bon courage

    ;o)
    2
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    En regardant de plus près, Xavier, tu aurais remarqué ce petit bout de code :

    If dix = 1 Or dix = 7 Or dix = 9 Then
    dix = dix - 1
    unite = unite + 10
    End If

    Il règle le problème. 471 sera bien traduit quatre cents soixante et onze ....

    Ceci dit, et comme je l'ai signalé, ce code se trouve ce site. Je ne dis pas qu'il est parfait, il y a sans doute mieux mais il a le mérite d'exister et de répondre à la demande.
    Quant à l'orthographe de 400 il est vrai que cent ne prend pas de S. il suffit donc de le supprimer dans le code... mais ça s'écrit bien quatre cent et non quatre-cent comme tu le dis : https://leconjugueur.lefigaro.fr/frlesnombres.php

    ;o)
    1
  4. zacharius Messages postés 122 Date d'inscription   Statut Membre 10
     
    Il s'agit du cas le plus simple :)

    Dans le cas du Java :

    pour une variable entière a,

    new Integer(a).toString();

    Pour le C :

    sprintf(myString, "%d", a);

    La syntaxe est pareil que printf sauf que tu ajoutes un tableau de char plutot que d'envoyer à la sortie standard!
    0
    1. ShaBoo Messages postés 406 Statut Membre 50
       
      Bonjour,

      Je crois qu'il veut plutôt ceci :

      si il tape 1 au clavier, il veut "un" afficher à l'écran.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    A vue d'oeil, ce code n'est tout de même pas parfait.
    Par exemple, 471 sera traduit "quatre cents soixante dix un".
    Outre la mauvaise orthographe de "quatre cents" qui devrait s'écrire "quatre-cent", le "soixante dix un" est assez problématique...
    Bref, le français n'est pas adapté à ce genre d'exercice, à moins d'utiliser les chiffres belges (septante / nonante)

    Xavier
    0
  7. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Effectivement, j'ai lu un peu vite, désolé ^^
    0