Convertir montant chiffre en lettre

Bonjour,
j'ai créé un état reçu du client, j'ai le montant en chiffre, ce que je voudrais maitenant c'est avoir aussi ce même montant en lettre comme dans les reçus.
je voudrais savoir aussi comment faire pour la feuille d'impression soit de petites tailles.

J'utilise access 2003

merci
Configuration: Windows XP Internet Explorer 6.0

12 réponses

  1. Salut,

    Il y a quelques année pour mon boulot, j'avais récupéré une fonction personnalisée dont je ne me souviens plus du nom de l'auteur pour le citer, qu'il m'en excuse.
    Colles ce code dans un module macro et Insertion/Fonction sélectionnes personnalisé, clic sur le nom du code chiffrelettre, et fais référence à la cellule dans laquelle tu vas saisir ton chiffre

    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", "Vingts", "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"
    Cent = 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 = "Cents " & 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(Cent)
    If t <> "" Then myct = IIf(Cent = 1, " Cent ", " Cents ")
    If t = "" Then myct = IIf(Cent = 1, " Cent d'Euro ", " Cents d'Euro ")
    If Cent = 0 Then d = "": myct = ""
    chiffrelettre = t & d & myct
    End Function

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    13
    1. Modérateur
      Salut,

      dont je ne me souviens plus du nom de l'auteur pour le citer, qu'il m'en excuse.

      C'est JvDo je crois
      0
    2. @lami20jSalut Lami20J,

      C'est possible, mais JVDO d'après le lien que tu fournis l’avait déjà pompé sur Exelabo et je crois bien que c’est sur ce forum que je l’avais également récupéré.

      Il est légèrement modifié avec le remplacement dans la cellule du chiffre par le nombre en toute lettre saisi en A, qui peut être un avantage, alors que celui que je propose certainement du même auteur, conserve le chiffre et renseigne la cellule choisie pour le nombre en toute lettre.
      Mais peu importe, le code fonctionne bien et quel que soit son auteur, il faut le remercier, dommage qu’on ne puisse pas le citer de façon certaine.

      A+
      Mike-31

      Un problème sans solution est un problème mal posé  (Einstein)
      0
    3. Merci
      c'est un peu flou à mon niveau.
      allons dans le champ "montantchiffre"
      est ce que je dois créer un autre champ"montantLettre" dans lequel s'affichera le montant en lettre qui devra recevoire le macros.
      0
    4. Merci pour le code
      bien fait
      0
  2. Ouvres ton fichier, clic droit sur l'onglet de page, cela va t'ouvrir le visual basic 
    Insertion/Module dans cette page blanche colles la totalité du code ci-dessous 


    salut,
    je viens de reprendre le travail, je ne suis toujours pas votre démarche. ce que vous appelez fichier est la base de donnée ou c'est requète ou état. moi j'ai copié le code dans module et nommé montantLettre

    dans la table facture, j'ai
    num-facture
    montant_chiffre
    montant_lettre
    date


    Reviens sur ta feuille de cacul et sélectionnes la cellule qui doit contenir le montant en lettre 
    Insertion/Fonction, sélectionnes Personnalisée et clic sur chiffrelettre 
    Une boite de dialogue va s'ouvrir, clic sur la cellule dans laquelle tu saisieras la valeur en chiffre 


    je ne vois pas où est insertion/Fonction et est ce que la feuille de calcul c'est dans le champ "montant_lettre" de la requète ou l'état.
    Nb: c'est pas à nous de saisir dans le champ "montant_lettre. c'est en saisissant dans le champ "montant_chiffre" que l'autre champ se remplisse.
    Merci
    5
    1. Salut,

      Ouvres ton fichier, clic droit sur l'onglet de page, cela va t'ouvrir le visual basic
      Insertion/Module dans cette page blanche colles la totalité du code ci-dessous

      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", "Vingts", "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"
      Cent = 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 = "Cents " & 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(Cent)
      If t <> "" Then myct = IIf(Cent = 1, " Cent ", " Cents ")
      If t = "" Then myct = IIf(Cent = 1, " Cent d'Euro ", " Cents d'Euro ")
      If Cent = 0 Then d = "": myct = ""
      chiffrelettre = t & d & myct
      End Function

      Reviens sur ta feuille de cacul et sélectionnes la cellule qui doit contenir le montant en lettre
      Insertion/Fonction, sélectionnes Personnalisée et clic sur chiffrelettre
      Une boite de dialogue va s'ouvrir, clic sur la cellule dans laquelle tu saisieras la valeur en chiffre

      Si tu rencontre un problème reviens sur le forum, de toute façon tiens nous au courant

      A+
      Mike-31

      Un problème sans solution est un problème mal posé  (Einstein)
      4
      1. Salut,

        Je pensais que tu avais abadonné, récupères un exemple et quelques explication avec le lien ci-dessous, j'ai apporté quelques modif au code

        https://www.cjoint.com/?gsvdVACCVo

        A+
        Mike-31

        Un problème sans solution est un problème mal posé  (Einstein)
        1
        1. c'est un fichier excel que vous avez envoyé moi j'uitlise access.
          1
          1. Exact autant pour moi, j'ai lu en diagonale

            A+
            Mike-31

            Un problème sans solution est un problème mal posé  (Einstein)
            1
            1. Exact autant pour moi, j'ai lu en diagonale 


              SALUT
              j'attend toujours ton aide pour mon problème sur access.

              Merci
              0
              1. merci a tous les membres de ce forum, particulierment a Mike-31 .... aussi le site!!!
                mountaga kane du Senegal (tagakane@hotmail.com)
                0
                1. Je suis désolé de vous dire que cette fonction ne fonctionne pas. Quand on met 95 par exemple, sa met = Quatre-vingt-dix-cinq euros
                  0