Prix en chiffre transformé en lettres [Résolu/Fermé]

Signaler
Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021
-
Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021
-
Bonjour.

Déjà, bonne année 2016 à toutes et tous.

Voilà ma question du jour:

Je voudrais, à la façon d'un chèque, remplir un bordereau d'expédition.

Il faudrait que lorsque je rentre, par exemple 123.38, dans une cellule voisine
apparaisse: CENT VINGT TROIS € TRENTE HUIT CTS. (ou CENT VINGT TROIS Euros TRENTE HUIT CTS)

Quelqu'un s'est-il penché sur ce problème ?

Merci




5 réponses

Bonjour
voila une function:
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 = "Euros" & 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
End Function

et dans la cellule mettre =Chiffrelettre(A1)

A+
Maurice
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
si ça ne te dérange pas tu peux me dire ou je met cette fonction
>
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018

Bonjour
A mettre dans un Module
A+
Maurice
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1 > Maurice
Merci infiniment
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
840
Bonjour,

ligne 44 : centime ne vaut pas 1 pour les valeurs de s égales à 2,01; 16,01; 17,01; 18,01; 19,01; 20,01; 64,01; 65,01; 66,01; 67,01; 68,01; 69,01; 70,01; 71,01; 72,01; 73,01 .......

la conséquence n'est pas dramatique mais il traîne un pluriel à "centimes" pour ces valeurs.

un
Dim centime As Integer
suffit à remédier à cette situation.

cordialement
Messages postés
3525
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
23 février 2021
1 870
Bonjour, c'est possible! Ici, ou tu trouveras une solution. Sur Google tu en trouveras d'autres si elles ne te conviennent pas, c'est très demandé!
Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021

Merci tyranausor.

J'ai commencé à éplucher Google il y a quelques heures.
Pas mal de liens morts ou incomplets, de réponses qui ne fonctionnent pas et de sites ou je ne veux pas aller (genre Softonic).

Je continue mes "fouilles", et je reviens vers vous si je ne trouve pas.

Bonne soirée et merci encore.
Messages postés
53856
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
13 mai 2021
15 871 >
Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021

Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021
>
Messages postés
53856
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
13 mai 2021

merci Raymond.

Le soucis est que je voudrai utiliser cela sur mon PC de boulot.
Hors, ce genre de manip m'est interdit. Mes accès sous Windows sont très restreints.
C'est dans ce but que je voudrais avoir un classeur avec cette fonction.
Je pourrais, comme je l'ai fais pour 2 ou 3 choses, y déposer ce dernier et l'utiliser.

Bonne soirée.
Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021

Merci Maurice.
Fonctionne nickel...

Bonne soirée
Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021

Bonsoir Maurice.

Tout allait bien, mais depuis sauvegarde en format 2003 (est ce bien cela ?),
j'ai un plantage. (beaucoup de manips pour adapter un arrière plan ?)

Je joins le fichier.

Merci

https://www.cjoint.com/c/FACts0l6TQm
Bonjour
ses pas un format 2003
ses un format sans macro >= 2007
voila un format 2003
http://www.cjoint.com/c/FACtUg1cMz7

A+
Maurice
Messages postés
45
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
9 avril 2021

Merci Maurice.
Toujours aussi efficace.

Bonne soirée