Fonction numText

Résolu/Fermé
mchotard Messages postés 425 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 30 octobre 2024 - 28 déc. 2014 à 10:57
tsouli.f.kamel Messages postés 2 Date d'inscription jeudi 28 avril 2016 Statut Membre Dernière intervention 23 mai 2016 - 23 mai 2016 à 11:48
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 lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 413
28 déc. 2014 à 11:01
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 2563 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 17 octobre 2024 1 058
28 déc. 2014 à 12:14
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 425 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 30 octobre 2024 39 > tontong Messages postés 2563 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 17 octobre 2024
28 déc. 2014 à 14:48
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 2563 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 17 octobre 2024 1 058 > mchotard Messages postés 425 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 30 octobre 2024
28 déc. 2014 à 15:47
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
28 avril 2016 à 21:21
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 jeudi 28 avril 2016 Statut Membre Dernière intervention 23 mai 2016 > tsouli.f.kamel
2 mai 2016 à 01:21
quelqu'un a essayé??
0
mchotard Messages postés 425 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 30 octobre 2024 39
28 déc. 2014 à 12:09
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 jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
28 déc. 2014 à 15:26
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
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 mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
29 déc. 2014 à 17:35
Bonjour,

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

cdlt
0
tontong Messages postés 2563 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 17 octobre 2024 1 058
29 déc. 2014 à 18:07
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