Conversion Chiffre en texte

Résolu/Fermé
Bernard - 23 janv. 2015 à 18:19
 eric - 9 févr. 2015 à 10:31
Bonjour,

Je suis à la recherche d'une possibilité pour convertir les chiffres en texte dans une feuille excel

exemple :

1523,55 donnerait mille cinq cent vingt trois €uros et cinquante cinq Centimes

J'ai bien trouvé des macros complémentaires qui le font, et ça fonctionne bien, le problème est que si j'envoie le fichier à quelqu'un qui n'a pas installé la macro complémentaire, ça ne marche plus lorsque la personne ouvre le fichier

donc, comment faire pour que ça fonctionne quel que soit la personne à qui j'envoie le fichier ?

il faudrait que la fonction soit incluse dans le fichier excel

ça fait un moment que je cherche, et je ne trouve pas

Merci de votre aide



A voir également:

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 janv. 2015 à 18:22
3
Bonjour

voila un Function a mettre dans un modul
et mettre dans une cellule "=chiffrelettre(A1)"

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


A+
Maurice
1
Désolé, mais je n'ai pas tout compris

sur ton lien, je retrouve la macro que j'ai déjà téléchargé et qui installe une fonction nommée "ConvNumberLetter"

mais si j'envoie le fichier à quelqu'un qui n'a pas installé la macro complémentaire, ça ne fonctionnera pas chez lui, ou bien ??
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 janv. 2015 à 19:51
non c'est un fichier xls, cela fonctionnera. Il faut juste que tu ailles dans la macro et mettre ceci pour avoir les euros:

Public Function ConvNumberLetter(Nombre As Double, Optional Devise As Byte = 3,

Il faut changer le 0 en 3
0
Entre temps, j'avais extrait le module du fichier ( exporter ), puis j'ai importé le fichier .bas obtenu dans un fichier excel perso, ça fonctionne,

Merci beaucoup pour votre aide

Maurice, je garde ta fonction, merci !

N'empêche, c'est quand même fou qu'il n'y ait pas un truc inclus dans excel, si puissant, pour faire un truc qui à priori paraît si 'simple'
0
c'est simple, il suffit de télécharger la macro "nbtexte"; l'installer après installatin, faire =nbtexte(nombre à convertir en lettre;6;2;" euro")
0