Convertir montant chiffre en lettre

ouzzin Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   -  
 toxicjesus -
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
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   Statut Membre Dernière intervention   29
 
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
boul
 
Merci pour le code
bien fait
0
ouzzin Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   29
 
Ouvres ton fichier, clic droit sur l'onglet de page, cela va t'ouvrir le visual basic 
Insertion/Module dans cette page blanche colles la totalité du code ci-dessous 


salut,
je viens de reprendre le travail, je ne suis toujours pas votre démarche. ce que vous appelez fichier est la base de donnée ou c'est requète ou état. moi j'ai copié le code dans module et nommé montantLettre

dans la table facture, j'ai
num-facture
montant_chiffre
montant_lettre
date


Reviens sur ta feuille de cacul et sélectionnes la cellule qui doit contenir le montant en lettre 
Insertion/Fonction, sélectionnes Personnalisée et clic sur chiffrelettre 
Une boite de dialogue va s'ouvrir, clic sur la cellule dans laquelle tu saisieras la valeur en chiffre 


je ne vois pas où est insertion/Fonction et est ce que la feuille de calcul c'est dans le champ "montant_lettre" de la requète ou l'état.
Nb: c'est pas à nous de saisir dans le champ "montant_lettre. c'est en saisissant dans le champ "montant_chiffre" que l'autre champ se remplisse.
Merci
5
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

Ouvres ton fichier, clic droit sur l'onglet de page, cela va t'ouvrir le visual basic
Insertion/Module dans cette page blanche colles la totalité du code ci-dessous

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


Reviens sur ta feuille de cacul et sélectionnes la cellule qui doit contenir le montant en lettre
Insertion/Fonction, sélectionnes Personnalisée et clic sur chiffrelettre
Une boite de dialogue va s'ouvrir, clic sur la cellule dans laquelle tu saisieras la valeur en chiffre

Si tu rencontre un problème reviens sur le forum, de toute façon tiens nous au courant

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
4
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

Je pensais que tu avais abadonné, récupères un exemple et quelques explication avec le lien ci-dessous, j'ai apporté quelques modif au code

https://www.cjoint.com/?gsvdVACCVo

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ouzzin Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   29
 
merci je m y rend
a+
1
ouzzin Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   29
 
c'est un fichier excel que vous avez envoyé moi j'uitlise access.
1
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Exact autant pour moi, j'ai lu en diagonale

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
1
ouzzin Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   29
 
Exact autant pour moi, j'ai lu en diagonale 


SALUT
j'attend toujours ton aide pour mon problème sur access.

Merci
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Access n'est pas ma tasse de thé, regardes sur ces deux liens

http://www.commentcamarche.net/faq/sujet 11100 vb6 vba transformer nombre en texte

https://access.developpez.com/sources/?page=Conv#ConvNomsPropres

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0
ouzzin Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   29
 
merci
0
mountaga
 
merci a tous les membres de ce forum, particulierment a Mike-31 .... aussi le site!!!
mountaga kane du Senegal (tagakane@hotmail.com)
0
toxicjesus
 
Je suis désolé de vous dire que cette fonction ne fonctionne pas. Quand on met 95 par exemple, sa met = Quatre-vingt-dix-cinq euros
0