Transformation de chiffre en lettre

Fermé
tacha84 Messages postés 58 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 13 février 2010 - 19 oct. 2007 à 09:40
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 19 oct. 2007 à 13:25
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

6 réponses

tacha84 Messages postés 58 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 13 février 2010 6
19 oct. 2007 à 10:15
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 oct. 2007 à 10:27
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 oct. 2007 à 11:20
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
zacharius Messages postés 122 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 20 décembre 2007 10
19 oct. 2007 à 09:47
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
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
19 oct. 2007 à 09:50
Bonjour,

Je crois qu'il veut plutôt ceci :

si il tape 1 au clavier, il veut "un" afficher à l'écran.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
19 oct. 2007 à 10:57
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
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
19 oct. 2007 à 13:25
Effectivement, j'ai lu un peu vite, désolé ^^
0