XL 2013 Convertir des chiffres en lettres sans les centimes

murainesouspatate

XLDnaute Occasionnel
Bonjour à tous,

Je suis en train de créer un fichier de facturation sur lequel je dois mettre la somme totale TTC à payer en lettres.
Jusque là je n'arrive pas à trouver comment ne pas faire paraitre les centimes puisque je suis à Nouméa et que nous sommes en francs pacifique ( les centimes n'éxistent pas ici).
J'ai bien trouvé la fonction ConvNumberLetter et un code qui va bien que vous trouverez en pièce-jointe, mais je ne sais pas comment arrondir à la valeur supérieur sans les décimales comme le fait la cellule si je mets le format de cellule "nombre" avec "zéro décimale".

Cordialement.
 

Pièces jointes

  • macro nombre en lettres.txt
    3.2 KB · Affichages: 129

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour à tous,

Je suis en train de créer un fichier de facturation sur lequel je dois mettre la somme totale TTC à payer en lettres.
Jusque là je n'arrive pas à trouver comment ne pas faire paraitre les centimes puisque je suis à Nouméa et que nous sommes en francs pacifique ( les centimes n'éxistent pas ici).
J'ai bien trouvé la fonction ConvNumberLetter et un code qui va bien que vous trouverez en pièce-jointe, mais je ne sais pas comment arrondir à la valeur supérieur sans les décimales comme le fait la cellule si je mets le format de cellule "nombre" avec "zéro décimale".

Cordialement.

????
Chiffrelettre(ENT(s))
 

Johnovich

XLDnaute Nouveau
Bonjour, je suis débutante, est je viens d'une petite île dans le pacifique, alors j'ai télécharger votre fichier, j'ai copier le macro pour l'introduire, j'ai inséré la cellule à convertir, mais problème après Franc il y a aussi des centimes, or je veux pas de ces centimes, en n'est en Polynésie, on a pas besoin

Merci pour tout
 

pierrejean

XLDnaute Barbatruc
Bonjour
Une possibilité: Utiliser cette fonction:
Function Chiffrelettre_sanscentime(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", "Francs", "billion", _
"milliard", "million", "mille", "Dirhams")
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 = "Francs" & sp: GoTo fin
If t <> "" And C = "" And D = "un" Then mydz = "un Franc" & sp: GoTo fin
If t <> "" And t2 = "" And C & D = "" Then mydz = "de Francs" & 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_sanscentime = t
End Function
 

Johnovich

XLDnaute Nouveau
BONJOUR PierreJean, Mauruuru roa (MERCI BEAUCOUP dans notre langue Tahitienne), grâce à vous j'ai pratiquement fini ma facture. En effet, j'ai un petit problème, il ne prend pas en charge les arrondies de mon TTC. La cellule destinataire de la formule personnalisé converti le TTC à payer en lettre avec les décimales.

Exemple: TTC = 1500 franc pacifique =>avec la fonction = 1495 franc

Ps: je ne sais pas non plus comment enregistrer cette formule pour qu'à chaque fois que je réouvre mon classeur il y a toujours la formule...je ne sais pas si on parle d'enregistrer un macro, un module, etc, JE SUIS COMPLETEMENT PERDU.

Vous pouvez m'aider SVP
 

Pièces jointes

  • Facture ELEC 2020.xlsx
    41.1 KB · Affichages: 8

murainesouspatate

XLDnaute Occasionnel
Bonjour, je suis en Nouvelle Calédonie et nous avons la même monnaie
je te conseille de créer un module et de copier la fonction de pierre-jean.

Je t'envoi un exemple en fichier joint que tu pourras utiliser en copiant le module 1

Tata ! (aurevoir d'ici)
 

Pièces jointes

  • Fonction ChiffreLettre.xlsm
    22.4 KB · Affichages: 17

Rani16

XLDnaute Nouveau
Bonjour,

Je suis également de Polynésie, cette formule est géniale et fonctionne sur tous fichiers Excel "normaux".
La formule ne fonctionne pas sur le fichier que j'utilise, J'utilise un fichier excel avec macros, peut-être que cela pose problème? est-ce que vous avez une solution svp?
 

murainesouspatate

XLDnaute Occasionnel
Bonjour,

Je suis également de Polynésie, cette formule est géniale et fonctionne sur tous fichiers Excel "normaux".
La formule ne fonctionne pas sur le fichier que j'utilise, J'utilise un fichier excel avec macros, peut-être que cela pose problème? est-ce que vous avez une solution svp?
Bonjour, cela fonctionne très bien sur un fichier .xlsm

Fonction à inserrer dans un module dans VBAProject (PERSONNAL.XLSB) ou bien dans un module de ton classeur si tu ne l'utilise que dans un seul classeur.

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", "Francs", "billion", _
"milliard", "million", "mille")
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 = "Francs" & sp: GoTo fin
If t <> "" And C = "" And D = "un" Then mydz = "un Francs" & sp: GoTo fin
If t <> "" And t2 = "" And C & D = "" Then mydz = "de Francs" & 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", " centimes")
If centime = 0 Then D = "": myct = ""
Chiffrelettre = t & D & myct
End Function

Puis dans la cellule ou tu veux voir apparaitre en toute lettre , écris cette formule:
=NOMPROPRE(Chiffrelettre(C2)) pour exemple C2 est la cellule de référence contenant la valeur en chiffre.

Cordialement
 

Pièces jointes

  • Exemple chiffre-lettre.xlsm
    20.2 KB · Affichages: 7

Rani16

XLDnaute Nouveau
Ia orana Murainesouspate,

Merci pour ta réponse, mais cela ne fonctionne toujours pas dans mon classeur principal, ci-dessous le message qui s'affiche...
Lorsque je duplique ma feuille dans un nouveau classeur la formule fonctionne mais je suis obligé de réenregistré le module à chaque fois, as-tu une solution pour que le module soit intégrer à tous mes classeurs?

Mais j'aimerais qu'elle fonctionne avant tout dans mon classeur principal...

Merci,

1613500294992.png
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    73.2 KB · Affichages: 8

Discussions similaires

Réponses
116
Affichages
3 K

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390