method monnaie_en_lettres_ST(MtNU Number, MonnaieST String) String ; Conversion de tout montant monétaire positif en lettres, ; les limites des nombres sont celles de la méthode nb_en_lettres_ST ; ; Le montant est arrondi à 2 décimales ; (exemples : 14,552 => 14,55 ; 14,558 => 14,56 ; 14,991 => 14,99 ; 14,999 => 15,00) ; ; Les monnaies supportées sont (valeurs possibles du 2e argument) : ; "F" ou "f" : Franc(s) / centime(s) ; "E" ou "e" : Euro(s) / centime(s) ; "$" : Dollar(s) / cent(s) ; ; La liste des monnaies peut être enrichie ; -> ajouter 5 éléments au tableau LibMonnaieDYST tels que : ; exemple : si code de monnaie = 'X' ; éléments : 'X' "nom de la monnaie" ; 'Xs' "nom de la monnaie au pluriel" ; 'Xde' "nom de la monnaie au pluriel précédé de 'de'" ; 'Xcent' "nom de la sous-monnaie" ; 'Xcents' "nom de la sous-monnaie au pluriel" ; remarque : les valeurs du tableau commence par un espace ! ; SMO - GIBBON Informatique - 1999 Var LibMonnaieDYST DynArray[] String ErrMonnaieLO Logical FrST, CentimeST, MtST String FrNU, CentimeNU Number CentimeSI SmallInt EndVar LibMonnaieDYST["F"] = " franc" LibMonnaieDYST["Fs"] = " francs" LibMonnaieDYST["Fde"] = " de francs" LibMonnaieDYST["Fcent"] = " centime" LibMonnaieDYST["Fcents"] = " centimes" LibMonnaieDYST["E"] = " euro" LibMonnaieDYST["Es"] = " euros" LibMonnaieDYST["Ede"] = " d'euros" LibMonnaieDYST["Ecent"] = " centime" LibMonnaieDYST["Ecents"] = " centimes" LibMonnaieDYST["$"] = " dollar" LibMonnaieDYST["$s"] = " dollars" LibMonnaieDYST["$de"] = " de dollars" LibMonnaieDYST["$cent"] = " cent" LibMonnaieDYST["$cents"] = " cents" MonnaieST = MonnaieST.upper() ErrMonnaieLO = False If MonnaieST.size() <> 1 Then ErrMonnaieLO = True Else If Not LibMonnaieDYST.contains(MonnaieST) Then ErrMonnaieLO = True EndIf EndIf If ErrMonnaieLO Then msgStop("Erreur de monnaie", "le code : '" + MonnaieST + "'\n n'est pas une monnaie supportée.") Return "" EndIf MtNU = MtNU.round(2) FrNU = floor(MtNU) CentimeNU = (MtNU - FrNU) * 100 CentimeSI = smallInt(CentimeNU.round(2)) FrST = nb_en_lettres_ST(FrNU) CentimeST = IIF(CentimeSI = 0, "", nb_en_lettres_ST(number(CentimeSI))) Switch Case FrNU <= 1 : FrST = FrST + LibMonnaieDYST[MonnaieST] Case FrST.match("..million") Or FrST.match("..millions") Or FrST.match("..milliard") Or FrST.match("..milliards") : FrST = FrST + LibMonnaieDYST[MonnaieST + "de"] Otherwise : FrST = FrST + LibMonnaieDYST[MonnaieST + "s"] EndSwitch Switch Case CentimeSI = 0 : Case CentimeSI = 1 : CentimeST = CentimeST + LibMonnaieDYST[MonnaieST + "cent"] Otherwise : CentimeST = CentimeST + LibMonnaieDYST[MonnaieST + "cents"] EndSwitch Return FrST + IIF(CentimeST.isBlank(), "", " et " + CentimeST) endMethod