Fonction numText

Résolu
mchotard Messages postés 457 Date d'inscription   Statut Membre Dernière intervention   -  
tsouli.f.kamel Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Est-il possible avec la fonction numtext, d'avoir les décimales en lettre également. Si A1 = 24,25 avec la formule numtext(a1;"euros";2) il m'indique vingt quatre euros 25
et non vingt quatre euros vingt cinq

merci et bonne année

4 réponses

Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour
je ne connais pas ce code qui correspond sans doute à un age récent d'Excel.
Mais toutefois, dans la logique on devrait pouvoir écrire:

=NUMTEXT(ENT(A1);"euro";2)&" "&A1-ENT(A1)

du moins je crois puisque je ne peux pas tester

crdlmnt
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour,
Sur mon grenier j'ai trouver une macro Numtext avec 6 arguments:
Mémo des arguments:
1 Référence qui contient le nombre en chiffres ou ce nombre.
2 UnitéEntSing: texte au singulier de l'unité à afficher pour la partie entière.
3 NbChiffresDec: nombre de chiffres décimaux pris en compte (arrondi standard).
4 UnitéDecSing: texte au singulier de l'unité à afficher pour la partie décimale.
5 UnitéEntPlur: texte au pluriel de l'unité à afficher pour la partie entière. Par défaut un "s" est ajouté au texte de l'unité au singulier.
6 UnitéDecPlur: texte au pluriel de l'unité à afficher pour la partie décimale. Par défaut un "s" est ajouté au texte de l'unité au singulier.
Là l'écriture des décimales ne pose pas de problème.
0
mchotard Messages postés 457 Date d'inscription   Statut Membre Dernière intervention   43 > tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention  
 
C'est super, mais je ne sais pas comment intégrer les argument dans la fonction ci dessous

numtext(a1;"euros";2)
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062 > mchotard Messages postés 457 Date d'inscription   Statut Membre Dernière intervention  
 
Ce n'est peut-être pas la même macro.
La mienne commence par:
Function NumText(Nombre As Currency, Optional UnitéEntSing As String, Optional NbChiffresDec As Integer, _
Optional UnitéDecSing As String, Optional UnitéEntPlur As String, Optional UnitéDecPlur As String) As String
Dim PartieEntière As Currency, PartieDécimal As Currency, Xlion As Long
Dim TxtEntier As String, TxtDécimal As String

' --- Calcul éventuellement le pluriel des unités ---------------
If UnitéEntSing <> "" And UnitéEntPlur = "" Then
UnitéEntPlur = UnitéEntSing & "s"


Hélas je ne retrouve pas l'origine et je me suis aperçu que j'avais fais des adaptations personnelles que je n'ose pas communiquer étant donné mon niveau de compétence en vba ;-)
J'ai récemment recommandé une autre macro:
https://forums.commentcamarche.net/forum/affich-31244435-speelnumber-cent-et-mille#p31254479
0
tsouli.f.kamel
 
Salam, c'est KAMEL

Je voie que vous étiez dans le bon chemin.
j'ai essayé le texte suivant:
=NumText(ENT(A1);"Dirhams")&"et "&NumText(100*(A1-ENT(A1));"Centimes")
ça a bien marché.

exemple:
A1=1234,56
Avec le texte qu'on a introduit, on essai de diviser ce nombre en deux.
un premier qui est 1234
et un deuxième qui sera 56,

la gymnastique est d'obtenir le nombre après la virgule; pour y faire :
1234,56-1234=0,56
100x0,56=56.

On converti le premier en LETTRE, on sépare par un ET, puis on converti le deuxième en LETTRE.

Merci de m'informer si ça a marché pour vous //
0
tsouli.f.kamel Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   > tsouli.f.kamel
 
quelqu'un a essayé??
0
mchotard Messages postés 457 Date d'inscription   Statut Membre Dernière intervention   43
 
merci mais la formule ne fonctionne pas. Le code numtext est une fonction complémentaire à télécharger
Cdlt
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

Il y a un classeur à télécharger, cela met les euros et les cents en allant dans la macro Alt F11, module1:

Public Function ConvNumberLetter(Nombre As Double, Optional Devise As Byte = 0,

changer le 0 par un 1

https://www.excel-downloads.com/threads/macro-xla-conversion-nombre-en-lettre.136580/
0
Maurice
 
Bonjour

a mettre dans une cellule =ChiffreLettre(C2)

Voila une macro
Function ChiffreLettre(s)
Dim a As Variant, gros As Variant
a = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _
"huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", _
"dix huit", "dix neuf", "vingt", "vingt et un", "vingt deux", "vingt trois", "vingt quatre", _
"vingt cinq", "vingt six", "vingt sept", "vingt huit", "vingt neuf", "trente", "trente et un", _
"trente deux", "trente trois", "trente quatre", "trente cinq", "trente six", "trente sept", _
"trente huit", "trente neuf", "quarante", "quarante et un", "quarante deux", "quarante trois", _
"quarante quatre", "quarante cinq", "quarante six", "quarante sept", "quarante huit", _
"quarante neuf", "cinquante", "cinquante et un", "cinquante deux", "cinquante trois", _
"cinquante quatre", "cinquante cinq", "cinquante six", "cinquante sept", "cinquante huit", _
"cinquante neuf", "soixante", "soixante et un", "soixante deux", "soixante trois", _
"soixante quatre", "soixante cinq", "soixante six", "soixante sept", "soixante huit", _
"soixante neuf", "soixante dix", "soixante et onze", "soixante douze", "soixante treize", _
"soixante quatorze", "soixante quinze", "soixante seize", "soixante dix sept", _
"soixante dix huit", "soixante dix neuf", "quatre-vingts", "quatre-vingt un", _
"quatre-vingt deux", "quatre-vingt trois", "quatre-vingt quatre", "quatre-vingt cinq", _
"quatre-vingt six", "quatre-vingt sept", "quatre-vingt huit", "quatre-vingt neuf", _
"quatre-vingt dix", "quatre-vingt onze", "quatre-vingt douze", "quatre-vingt treize", _
"quatre-vingt quatorze", "quatre-vingt quinze", "quatre-vingt seize", "quatre-vingt dix sept", _
"quatre-vingt dix huit", "quatre-vingt dix neuf")
gros = Array("", "billions", "milliards", "millions", "mille", "euros", "billion", _
"milliard", "million", "mille", "euro")
sp = Space(1)
chaine = "00000000000000"
centime = s * 100 - (Int(s) * 100)
s = Str(Int(s)): Lg = Len(s) - 1: s = Right(s, Lg): Lg = Len(s)
If Lg < 15 Then chaine = Mid(chaine, 1, (15 - Lg)) Else chaine = ""
s = chaine + s
'billions au centaines
gp = 1
For k = 1 To 5
x = Mid(s, gp, 1): c = a(Val(x))
x = Mid(s, gp + 1, 2): d = a(Val(x))
If k = 5 Then
If t2 <> "" And c & d = "" Then mydz = "Dinars Algériens" & sp: GoTo Fin
If t <> "" And c = "" And d = "un" Then mydz = "un euros" & sp: GoTo Fin
If t <> "" And t2 = "" And c & d = "" Then mydz = "d'euros" & sp: GoTo Fin
If t & c & d = "" Then myct = "": mydz = "": GoTo Fin
End If
If c & d = "" Then GoTo Fin
If d = "" And c <> "" And c <> "un" Then mydz = c & sp & "cents " & gros(k) & sp: GoTo Fin
If d = "" And c = "un" Then mydz = "cent " & gros(k) & sp: GoTo Fin
If d = "un" And c = "" Then myct = IIf(k = 4, gros(k) & sp, "un " & gros(k + 5) & sp): GoTo Fin
If d <> "" And c = "un" Then mydz = "cent" & sp
If d <> "" And c <> "" And c <> "un" Then mydz = c & sp & "cent" + sp
myct = d & sp & gros(k) & sp
Fin:
t2 = mydz & myct
t = t & mydz & myct
mydz = "": myct = ""
gp = gp + 3
Next
d = a(centime)
If t <> "" Then myct = IIf(centime = 1, " centime", " centimes")
If t = "" Then myct = IIf(centime = 1, " centime d'euro", " centimes d'euro")
If centime = 0 Then d = "": myct = ""
ChiffreLettre = t & d & myct
'ChiffreLettre = Application.Proper(t & d & myct)
End Function

A+
Maurice
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour,

tu peux aussi aller là : http://www.excelabo.net/excel/chiffres_en_lettres

cdlt
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour,
Même si on ne prend pas en compte la recommandation de réforme de 1990 il faut des traits d'union entre les éléments pour les nombres inférieurs à cent sauf s'il ya un "et": "vingt et un" mais "quatre-vingt-douze".
L'array a= a besoin de quelques corrections.
0