XL 2013 Convertir chiffres en lettres en anglais avec 3 nombre après virgule

Galaxy_2019

XLDnaute Junior
Bonjour le Forum,

Vue que je suis nul en VBA, je me suis coincé et j'ai pas trouvé une solution adéquate sur le Net.

Mon besoin c'est de trouvé un code VBA qui convertir les chiffres en lettres en anglais avec 3 chiffres après la virgule et selon le devise aux choix.

J'ai trouvé un fichier (en pièce jointe) qui convertir les chiffres en lettres en français mais j'ai pas pu l'adapté.

Merci infiniment

Dans l'attente de votre réponses.

Cordialement
 

Pièces jointes

  • Test.xlsm
    30.7 KB · Affichages: 37
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour,

Serait-il possible un code VBA aux lieu d'un logiciel, parce que mon fichier en question sera partager sur plusieurs machine et en plus on peut installer le logiciel sur ces machines (sous l'autorisation de l'administrateur).

Merci.
Nairolf ;), kiki29 ;), Galaxy_2019 :) bonsoir,

@Galaxy_2019 : Kiki29 t'as proposé des macros complémentaires, ce n'est pas un logiciel.
 

Galaxy_2019

XLDnaute Junior
Bonsoir a tous,

Ce sont des macros exécutables qui nécessitent une installation, et comme je vous l'ai dit avant, j'ai pas l'autorisation d'installer des fichiers.exe sur la machine et pour cela j'aimerais bien si possible d'avoir un code vba.
@kiki29, je sais que un code vba prend du temps, parce que j'ai essayé plusieurs fois et plusieurs jours pour adapter le code du fichier jointe mon poste #1 mais j'ai pas pu réaliser.

Merci beaucoup
 

cp4

XLDnaute Barbatruc
Bonjour,

Au post#6, kiki29 ;) t'a mis un lien vers un code. Il semble que tu n'as cliqué sur le lien. J'ai pris la peine de le faire pour toi, code ci-dessous:
VB:
Option Explicit

Function SpellNumber(ByVal MyNumber)
   Dim Dollars, Cents, Temp, DecimalPlace, Count

   ReDim Place(9) As String
   Place(2) = " Thousand "
   Place(3) = " Million "
   Place(4) = " Billion "
   Place(5) = " Trillion "

   ' String representation of amount.
   MyNumber = Trim(Str(MyNumber))

   ' Position of decimal place 0 if none.
   DecimalPlace = InStr(MyNumber, ".")

   ' Convert cents and set MyNumber to dollar amount.
   If DecimalPlace > 0 Then
      Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
      MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
   End If

   Count = 1
   Do While MyNumber <> ""
      Temp = GetHundreds(Right(MyNumber, 3))
      If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
      If Len(MyNumber) > 3 Then
         MyNumber = Left(MyNumber, Len(MyNumber) - 3)
      Else
         MyNumber = ""
      End If
      Count = Count + 1
   Loop

   Select Case Dollars
   Case ""
      Dollars = "No Dollars"
   Case "One"
      Dollars = "One Dollar"
   Case Else
      Dollars = Dollars & " Dollars"
   End Select

   Select Case Cents
   Case ""
      Cents = " and No Cents"
   Case "One"
      Cents = " and One Cent"
   Case Else
      Cents = " and " & Cents & " Cents"
   End Select

   SpellNumber = Dollars & Cents

End Function
Ce code fonctionne.
chiffre en lettres anglais.gif
 

cp4

XLDnaute Barbatruc
Bonjour a tous,

@cp4: merci pour votre réponse, désolé parce que j'ai pas vu le post#6 de kiki29, et pour votre code serait-il possible de convertir les 3 chiffres après la virgule aux lieu de 2 chiffres..!!!

Merci a vous.
Apparemment, tu n'as rien compris. Ce n'est pas mon code.
Personnellement, je ne sais pas comment dans un format monétaire exprimer les millièmes de centimes. D'ailleurs, je n'en vois pas l'utilité.

Bonne journée.
 

Galaxy_2019

XLDnaute Junior
Bonjour,

Je sais et j'ai bien compris que ce n'est pas votre code, mais j'ai sollicite votre aimable support pour adapter le code afin de convertir les 3 chiffres après virgule si possible.

Merci
Apparemment, tu n'as rien compris. Ce n'est pas mon code.
Personnellement, je ne sais pas comment dans un format monétaire exprimer les millièmes de centimes. D'ailleurs, je n'en vois pas l'utilité.

Bonne journée.
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour,

Je sais et j'ai bien compris que ce n'est pas votre code, mais j'ai demander votre support pour adapter le code afin de convertir les 3 chiffres après virgule si possible.

Merci
Franchement, les deux chiffres sont exprimés en 'Cents', le 3ème dans quelle unité vas-tu l'exprimer.

12,365 ------>Twelve Dollars and Thirty Six Cents and Five "quoi"

Je trouve ta demande insolite.En général, quand il s'agit de monnaie on arrondit par défaut ou par excès.

Bonne journée.
 

patricktoulon

XLDnaute Barbatruc
bonjour
je cite
Mon besoin c'est de trouvé un code VBA qui convertir les chiffres en lettres en anglais avec 3 chiffres après la virgule et selon le devise aux choix.

rare sont les monnaie qui ont 3 décimales (il y en a quelques unes ) comme le dinar en Tunisie par exemple qui n'a pas de centimes mais des millimes 1000 millimes donne 1 dinar

il faut donc ajouter une condition supplémentaire AVANT LA CONVERSION par la monnaie

mais a ce titre d'une petite macro toute simple on va dans une usine a gaz
 

Galaxy_2019

XLDnaute Junior
Franchement, les deux chiffres sont exprimés en 'Cents', le 3ème dans quelle unité vas-tu l'exprimer.

12,365 ------>Twelve Dollars and Thirty Six Cents and Five "quoi"

Je trouve ta demande insolite.En général, quand il s'agit de monnaie on arrondit par défaut ou par excès.

Bonne journée.
Bonjour,

les trois chiffres sont exprimés en "Fils"(Dinar Kuwaiti)
12,365 ------>Twelve Dinars and Three hundred and sixty five Fils

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
315 135
Messages
2 116 620
Membres
112 815
dernier inscrit
Pierre43