Chiffre en lettre par formule

bonsoir a vous tous

connaissez vous une formule qui permet de transformé un chiffre en lettre en tenant compte du pluriel de "cents"?car j'ai un code vba qui le fait mais ce code ralenti le fichier concerné

Pascal

grisan29 a écrit :

connaissez vous une formule qui permet de transformé un chiffre en lettre en tenant compte du pluriel de "cents"?car j'ai un code vba qui le fait mais ce code ralenti le fichier concerné

Kamoulox !!!

Quel chiffre doit donner quelle lettre ?? Vous parlez aussi d'un code, c'est du secret défense ou on a le droit de le voir pour éventuellement comprendre ce que vous souhaitez faire ??

Cdt,

Darzou

Edit:

Au temps pour moi, c'était en fait assez explicite... Bon courage...

Bonjour,

tu peux télécharger et installer MoreFunc c'est gratuit sur le net, puis utiliser la fonction NBTEXTE()..

@ + +

bonjour

par formules ??? j'avais fait un truc .... +/- potable ; mais c'est l'usine , de plus il faudrait une feuille dediée

je met un exemplaire sur le forum pour que tu te rendes compte

cordialement

bonjour a vous tous

il n'y a aucun secret défense, bien au contraire voici le code du module et dans la feuille la cellule dédié

=chiffrelettre(L31)

dont sa réponse est toujours en cours de fonctionnement quand d'autres lignes s'écrivent ce qui fait qu'il y a conflit et c'est le code qui l'emporte et ralenti le reste

Function chiffrelettre(s)
'trouvé sur exelabo
  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", " CENTS")
  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

tulipe_4 ton exemple est bien mais ne prends pas les décimales

Pascal

bonjour a tous

merci de vos réponses mais j'ai fini par trouver la solution la mieux a ma situation

donc la formule qui est dans la cell ("L31") soit chiflet de son nom est mis en clearcontents a l'initialisation de l'usf et réécrite a la fermeture (croix ou bouton)

voila ma solution qui clos le post

Pascal

Rechercher des sujets similaires à "chiffre lettre formule"