Convertir montant chiffre en lettre

Fermé
ouzzin Messages postés 257 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 17 décembre 2012 - 4 juin 2009 à 14:46
 toxicjesus - 1 avril 2012 à 11:19
Bonjour,
j'ai créé un état reçu du client, j'ai le montant en chiffre, ce que je voudrais maitenant c'est avoir aussi ce même montant en lettre comme dans les reçus.
je voudrais savoir aussi comment faire pour la feuille d'impression soit de petites tailles.

J'utilise access 2003

merci
A voir également:

12 réponses

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
4 juin 2009 à 16:40
Salut,

Il y a quelques année pour mon boulot, j'avais récupéré une fonction personnalisée dont je ne me souviens plus du nom de l'auteur pour le citer, qu'il m'en excuse.
Colles ce code dans un module macro et Insertion/Fonction sélectionnes personnalisé, clic sur le nom du code chiffrelettre, et fais référence à la cellule dans laquelle tu vas saisir ton chiffre


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", "Vingts", "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"
Cent = 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 = "Cents " & 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(Cent)
If t <> "" Then myct = IIf(Cent = 1, " Cent ", " Cents ")
If t = "" Then myct = IIf(Cent = 1, " Cent d'Euro ", " Cents d'Euro ")
If Cent = 0 Then d = "": myct = ""
chiffrelettre = t & d & myct
End Function

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
13
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
4 juin 2009 à 22:33
Salut,

dont je ne me souviens plus du nom de l'auteur pour le citer, qu'il m'en excuse.

C'est JvDo je crois
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
4 juin 2009 à 23:39
Salut Lami20J,

C'est possible, mais JVDO d'après le lien que tu fournis l’avait déjà pompé sur Exelabo et je crois bien que c’est sur ce forum que je l’avais également récupéré.

Il est légèrement modifié avec le remplacement dans la cellule du chiffre par le nombre en toute lettre saisi en A, qui peut être un avantage, alors que celui que je propose certainement du même auteur, conserve le chiffre et renseigne la cellule choisie pour le nombre en toute lettre.
Mais peu importe, le code fonctionne bien et quel que soit son auteur, il faut le remercier, dommage qu’on ne puisse pas le citer de façon certaine.


A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0
ouzzin Messages postés 257 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 17 décembre 2012 29
5 juin 2009 à 15:03
Merci
c'est un peu flou à mon niveau.
allons dans le champ "montantchiffre"
est ce que je dois créer un autre champ"montantLettre" dans lequel s'affichera le montant en lettre qui devra recevoire le macros.
0
Merci pour le code
bien fait
0