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
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
A voir également:
- Transformation de chiffre en lettre
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Idée de code à 6 chiffre - Forum loisirs/vie pratique
- Excel trier par ordre croissant chiffre - Guide
- Ajouter lettre devant chiffre excel ✓ - Forum Excel
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
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
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
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)
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)
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
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)
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)
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
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!
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!
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
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.
Je crois qu'il veut plutôt ceci :
si il tape 1 au clavier, il veut "un" afficher à l'écran.
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
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
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
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
19 oct. 2007 à 13:25
Effectivement, j'ai lu un peu vite, désolé ^^