Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conversion chiffres en lettres ?

10 réponses
Avatar
John
Bonjour à tous,

Je sais que dans Access il existe un code qui transforme les chiffres en
lettres par exemple : 1220,36 euros MILLE DEUX CENT VINGT EUROS ET TRENTE SIX
CENTIMES.

Savez-vous s'il existe un code vba similaire pour Excel 2000 à 2007 ?

Merci.
--
John.

10 réponses

Avatar
Philippe.R
Bonjour,

La réponse est au bout de ce lien :

http://www.excelabo.net/excel/fonctionsconversion.php#nombresenlettres

--
http://www.excelabo.net/mpfe/connexion.php
Avec plaisir
Philippe.R
"John" a écrit dans le message de
news:
Bonjour à tous,

Je sais que dans Access il existe un code qui transforme les chiffres en
lettres par exemple : 1220,36 euros MILLE DEUX CENT VINGT EUROS ET TRENTE
SIX
CENTIMES.

Savez-vous s'il existe un code vba similaire pour Excel 2000 à 2007 ?

Merci.
--
John.


Avatar
MichDenis
'----------------------------------
Sub Exemple()

MsgBox chiffrelettre(1253.36)

End Sub
'----------------------------------

'----------------------------------
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
'----------------------------------






"John" a écrit dans le message de news:

Bonjour à tous,

Je sais que dans Access il existe un code qui transforme les chiffres en
lettres par exemple : 1220,36 euros MILLE DEUX CENT VINGT EUROS ET TRENTE SIX
CENTIMES.

Savez-vous s'il existe un code vba similaire pour Excel 2000 à 2007 ?

Merci.
--
John.
Avatar
MichDenis
http://www.excelabo.net/excel/fonctionsconversion.php#nombresenlettres

si c'est la macro que tu retrouves sur le site de Frédéric, il y a un os !

http://frederic.sigonneau.free.fr/code/Fonctions/ChiffresEnLettresJPPastinelli.txt

Problématique avec toutes les chiffres dont les décimales se terminent ainsi
12.2 256.6 854.8 ...etc
Avatar
Misange
Non ce n'est pas celle de Frédéric. Mais je raouterai la tienne, deux
approches valent mieux qu'une ;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

http://www.excelabo.net/excel/fonctionsconversion.php#nombresenlettres

si c'est la macro que tu retrouves sur le site de Frédéric, il y a un os !

http://frederic.sigonneau.free.fr/code/Fonctions/ChiffresEnLettresJPPastinelli.txt

Problématique avec toutes les chiffres dont les décimales se terminent ainsi
12.2 256.6 854.8 ...etc




Avatar
MichDenis
Psitt, il me semble que celle que j'ai émise est déjà sur ton site !
De mémoire, sur un fil, il y a déjà un moment, j'avais noté
cet os et proposé 2 procédures différentes !



"Misange" a écrit dans le message de news:

Non ce n'est pas celle de Frédéric. Mais je raouterai la tienne, deux
approches valent mieux qu'une ;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

http://www.excelabo.net/excel/fonctionsconversion.php#nombresenlettres

si c'est la macro que tu retrouves sur le site de Frédéric, il y a un os !

http://frederic.sigonneau.free.fr/code/Fonctions/ChiffresEnLettresJPPastinelli.txt

Problématique avec toutes les chiffres dont les décimales se terminent ainsi
12.2 256.6 854.8 ...etc




Avatar
Modeste
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

De mémoire, sur un fil, il y a déjà un moment, j'avais noté
cet os et proposé 2 procédures différentes !

"Misange" a écrit
deux approches valent mieux qu'une ;-)


allons jusque trois ;o)))
celle de LL dans Morefun
http://xcell05.free.fr/pages/morefun/nbtexte.htm

--
--
@+
;o)))

Avatar
MichDenis
| allons jusque trois ;o)))
| celle de LL dans Morefun
| http://xcell05.free.fr/pages/morefun/nbtexte.htm

Inadmissible puisqu'elle est imbriquée dans Morefunc.xll 4.2
;-)
Avatar
Youky
Bonjour MichDenis, ainsi qu'a Tous,
Je tiens à signaler que j'ai écris cette macro en début des années 80 sur un
Thomson TO8
pour un usage personnel.
J'ai ensuite modifié cette macro au fils du temps en suivant les évolutions
des PC.
Je n'avais pas prévu non plus que mon fichier traverse l'Atlantique.
Cette macro reste facilement modifiable; ce qui n'est pas négligable........
Amicalement
Youky

"MichDenis" a écrit dans le message de news:
%
'----------------------------------
Sub Exemple()

MsgBox chiffrelettre(1253.36)

End Sub
'----------------------------------

'----------------------------------
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
'----------------------------------






"John" a écrit dans le message de news:

Bonjour à tous,

Je sais que dans Access il existe un code qui transforme les chiffres en
lettres par exemple : 1220,36 euros MILLE DEUX CENT VINGT EUROS ET TRENTE
SIX
CENTIMES.

Savez-vous s'il existe un code vba similaire pour Excel 2000 à 2007 ?

Merci.
--
John.




Avatar
MichDenis
Je ne doute pas de ta paternité sur cette macro !
j'en prends bonne note.

Salutations.

"Youky" a écrit dans le message de news:

Bonjour MichDenis, ainsi qu'a Tous,
Je tiens à signaler que j'ai écris cette macro en début des années 80 sur un
Thomson TO8
pour un usage personnel.
J'ai ensuite modifié cette macro au fils du temps en suivant les évolutions
des PC.
Je n'avais pas prévu non plus que mon fichier traverse l'Atlantique.
Cette macro reste facilement modifiable; ce qui n'est pas négligable........
Amicalement
Youky

"MichDenis" a écrit dans le message de news:
%
'----------------------------------
Sub Exemple()

MsgBox chiffrelettre(1253.36)

End Sub
'----------------------------------

'----------------------------------
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
'----------------------------------






"John" a écrit dans le message de news:

Bonjour à tous,

Je sais que dans Access il existe un code qui transforme les chiffres en
lettres par exemple : 1220,36 euros MILLE DEUX CENT VINGT EUROS ET TRENTE
SIX
CENTIMES.

Savez-vous s'il existe un code vba similaire pour Excel 2000 à 2007 ?

Merci.
--
John.




Avatar
Misange
Ce serait pas la première fois que je remets sur excelabo un truc qui y
est déjà... Les effets de l'age ?
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Psitt, il me semble que celle que j'ai émise est déjà sur ton site !
De mémoire, sur un fil, il y a déjà un moment, j'avais noté
cet os et proposé 2 procédures différentes !



"Misange" a écrit dans le message de news:

Non ce n'est pas celle de Frédéric. Mais je raouterai la tienne, deux
approches valent mieux qu'une ;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

http://www.excelabo.net/excel/fonctionsconversion.php#nombresenlettres

si c'est la macro que tu retrouves sur le site de Frédéric, il y a un os !

http://frederic.sigonneau.free.fr/code/Fonctions/ChiffresEnLettresJPPastinelli.txt

Problématique avec toutes les chiffres dont les décimales se terminent ainsi
12.2 256.6 854.8 ...etc