Problème conversion chiffres en lettres

Bonsoir tout le monde,

Merci de me lire et de me venir en aide.

Je n'y connais rien en programmation de macro.

Je vous joins mon fichier

J'ai essayé d'adapter sur mon classeur (voir l'onglet feuille 1) une solution proposée sur votre site (voir l'onglet Facture qui contient la solution que je n'arrive pas à adapter sur l'onglet feuille 1)

Je n'y arrive pas

Pouvez-vous m'aider ?

Je vous remercie de bien vouloir m'aider !

58classeur1.xlsm (37.90 Ko)

Bonsoir Dequesne,

Remplace ton code par celui-ci :

Option Explicit 'Déclaration des variables obligatoire
Function CHIFFRE_LETTRE(chiffre)  ' Youky
Dim Nombre As Variant, Entier_naturel As Variant
Dim sp, chaine, centime, lg, gp, k, x, C, D, T2, mydz, T, myct
Nombre = 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")
Entier_naturel = Array("", "billions", "milliards", "millions", "mille", "Euros", "billion", _
"milliard", "million", "mille", "Euro")
sp = Space(1)
chaine = "00000000000000"
centime = chiffre * 100 - (Int(chiffre) * 100)
chiffre = Str(Int(chiffre)): lg = Len(chiffre) - 1: chiffre = Right(chiffre, lg): lg = Len(chiffre)
If lg < 15 Then chaine = Mid(chaine, 1, (15 - lg)) Else chaine = ""
chiffre = chaine + chiffre

gp = 1
For k = 1 To 5
x = Mid(chiffre, gp, 1): C = Nombre(Val(x))
x = Mid(chiffre, gp + 1, 2): D = Nombre(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 " & Entier_naturel(k) & sp: GoTo fin
If D = "" And C = "un" Then mydz = "cent " & Entier_naturel(k) & sp: GoTo fin
If D = "un" And C = "" Then myct = IIf(k = 4, Entier_naturel(k) & sp, "un " & Entier_naturel(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 & Entier_naturel(k) & sp
fin:
T2 = mydz & myct
T = T & mydz & myct
mydz = "": myct = ""
gp = gp + 3
Next
D = Nombre(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 = ""
CHIFFRE_LETTRE = T & D & myct
End Function

Bonjour,

J'ai remplacé mon code comme tu me l'avais suggéré.

UN TOUT GRAND MERCI Cela marche parfaitement !

Votre aide m'est précieuse et va me faire gagner pas mal de temps

Merci encore

Merci également à tous ceux qui ont essayé de m'aider

Bonjour,

cette routine ne me semble pas fournir un résultat correct du point de vue du respect de la langue française. exemple on écrit

dix-sept et non dix sept. idem pour la majorité des nombres inférieurs à 100.

Rechercher des sujets similaires à "probleme conversion chiffres lettres"