Conversion chiffres en lettres ?

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #4855111
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" 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.


MichDenis
Le #4855051
'----------------------------------
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"
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.
MichDenis
Le #4855011
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
Misange
Le #4854951
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




MichDenis
Le #4854851
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"
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




Modeste
Le #4854811
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" deux approches valent mieux qu'une ;-)


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

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

MichDenis
Le #4854801
| 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
;-)
Youky
Le #4854681
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" %
'----------------------------------
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"
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.




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

Salutations.

"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" %
'----------------------------------
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"
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.




Misange
Le #4854311
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"
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








Publicité
Poster une réponse
Anonyme