Rechercher : dans
Par :

Convertir montant chiffre en lettre

Dernière réponse le 25 jun 2009 à 10:06:59 ouzzin, le 4 jun 2009 à 14:46:50 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP Internet Explorer 6.0

Meilleures réponses pour « convertir montant chiffre en lettre » dans :
VB6/VBA Transformer nombre en texte VoirIntroduction Préliminaires VB6 Dans le module de la forme Dans Module1 Introduction La fonction peut transformer des nombres de l'unité jusqu'à 999 tera. Prend en compte la syntaxe pour le français de France, de Belgique et de...
Chiffrement par substitution VoirLe chiffrement par substitution Le chiffrement par substitution consiste à remplacer dans un message une ou plusieurs entités (généralement des lettres) par une ou plusieurs autres entités. On distingue généralement plusieurs types de...

1

Mike-31, le 4 jun 2009 à 16:40:59
  • +2

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)

Répondre à Mike-31

2

lami20j, le 4 jun 2009 à 22:33:41

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 106485010510997108

Répondre à lami20j

3

Mike-31, le 4 jun 2009 à 23:39:14

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é  (Einstei­n)

Répondre à Mike-31

4

ouzzin, le 5 jun 2009 à 15:03:02

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.

Répondre à ouzzin

5

Mike-31, le 5 jun 2009 à 15:57:00
  • +2

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)

Répondre à Mike-31

6

ouzzin, le 18 jun 2009 à 17:50:40

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

Répondre à ouzzin

7

Mike-31, le 18 jun 2009 à 21:05:33

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

http://cjoint.com/?gsvdVACCVo

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstei­n)

Répondre à Mike-31

8

ouzzin, le 19 jun 2009 à 14:36:25
  • +1

Merci je m y rend
a+

Répondre à ouzzin

9

ouzzin, le 19 jun 2009 à 14:42:32

C'est un fichier excel que vous avez envoyé moi j'uitlise access.

Répondre à ouzzin

10

Mike-31, le 19 jun 2009 à 14:55:37

Exact autant pour moi, j'ai lu en diagonale

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstei­n)

Répondre à Mike-31

11

ouzzin, le 24 jun 2009 à 10:25:03

Exact autant pour moi, j'ai lu en diagonale 


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

Merci

Répondre à ouzzin

12

Mike-31, le 24 jun 2009 à 13:49:02

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

http://access.developpez.com/sources/?page=Conv#ConvNomsProp­res

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstei­n)

Répondre à Mike-31

13

 ouzzin, le 25 jun 2009 à 10:06:59

Merci

Répondre à ouzzin
Collection CommentÇaMarche.net