Modifier la macro de ConvNumberLetter pour ajouter la langue anglaise

Zigwee

XLDnaute Nouveau
Bonjour tout le monde,

J’espère ne pas multiplier les discussions avec ma demandes mais j'ai fait plusieurs recherches sur le forum et n'ayant pas trouve, je me lance...

Alors voici mon "problème" :
J'ai téléchargé et installe NbLettre que j'utilisais jusqu’à présent sans problème. Mais aujourd'hui, travaillant dans un pays anglophone (d'ou parfois le manque d'accent car j'utilise un clavier qwerty...), j'aimerai que vous m'aidiez afin de pouvoir modifier cette macro dans le but d'obtenir la conversion des chiffres en lettres mais en anglais... Car c'est "paramétré" pour le français et le suisse uniquement.
J’espère que je ne suis pas trop confuse dans ma demande étant débutante en excel...

Merci beaucoup par avance...
 

Modeste geedee

XLDnaute Barbatruc
Re : Modifier la macro de ConvNumberLetter pour ajouter la langue anglaise

Bonsour®
voir là :
Excel: Convert Numbers to Words/Text

Option Explicit
VB:
 '****************
      ' Main Function *
      '****************
'   [url=http://www.ozgrid.com/VBA/ValueToWords.htm]Excel: Convert Numbers to Words/Text[/url]
      Function SpellNumber(ByVal MyNumber)
          Dim Dollars, Cents, Temp
          Dim 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
VB:
'*******************************************
      ' Converts a number from 100-999 into text *
      '*******************************************
      Function GetHundreds(ByVal MyNumber)
          Dim Result As String
          If Val(MyNumber) = 0 Then Exit Function
          MyNumber = Right("000" & MyNumber, 3)
          ' Convert the hundreds place.
          If Mid(MyNumber, 1, 1) <> "0" Then
              Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
          End If
          ' Convert the tens and ones place.
          If Mid(MyNumber, 2, 1) <> "0" Then
              Result = Result & GetTens(Mid(MyNumber, 2))
          Else
              Result = Result & GetDigit(Mid(MyNumber, 3))
          End If
          GetHundreds = Result
      End Function
VB:
 '*********************************************
      ' Converts a number from 10 to 99 into text. *
      '*********************************************
     Function GetTens(TensText)
          Dim Result As String
          Result = ""           ' Null out the temporary function value.
          If Val(Left(TensText, 1)) = 1 Then   ' If value between 10-19...
              Select Case Val(TensText)
                  Case 10: Result = "Ten"
                  Case 11: Result = "Eleven"
                  Case 12: Result = "Twelve"
                  Case 13: Result = "Thirteen"
                  Case 14: Result = "Fourteen"
                  Case 15: Result = "Fifteen"
                  Case 16: Result = "Sixteen"
                  Case 17: Result = "Seventeen"
                  Case 18: Result = "Eighteen"
                  Case 19: Result = "Nineteen"
                  Case Else              
End Select
          Else                                 ' If value between 20-99...
              Select Case Val(Left(TensText, 1))
                  Case 2: Result = "Twenty "
                  Case 3: Result = "Thirty "
                  Case 4: Result = "Forty "
                  Case 5: Result = "Fifty "
                  Case 6: Result = "Sixty "
                  Case 7: Result = "Seventy "
                  Case 8: Result = "Eighty "
                  Case 9: Result = "Ninety "
                  Case Else             
End Select
              Result = Result & GetDigit(Right(TensText, 1))                    ' Retrieve ones place.
          End If
          GetTens = Result
      End Function
VB:
'*******************************************
      ' Converts a number from 1 to 9 into text. *
      '*******************************************
      Function GetDigit(Digit)
          Select Case Val(Digit)
              Case 1: GetDigit = "One"
              Case 2: GetDigit = "Two"
              Case 3: GetDigit = "Three"
              Case 4: GetDigit = "Four"
              Case 5: GetDigit = "Five"
              Case 6: GetDigit = "Six"
              Case 7: GetDigit = "Seven"
              Case 8: GetDigit = "Eight"
              Case 9: GetDigit = "Nine"
              Case Else: GetDigit = ""
          End Select
      End Function
 

Zigwee

XLDnaute Nouveau
Re : Modifier la macro de ConvNumberLetter pour ajouter la langue anglaise

Merci pour votre réponse, mais je suis navrée, je ne comprends pas...

Est-ce que je peux vous faire un copie/colle de la macro afin que je sache quelle partie je dois modifier?

Car ce que j'ai oublie de préciser c'est que je travaille pour une ONG et j'ai des rapports a faire en français également pour les bailleurs... Donc je souhaiterai converser la conversion en français, et ajouter la conversion en anglais... (celle en suisse peut être supprimée)

Merci encore.
 

Modeste geedee

XLDnaute Barbatruc
Re : Modifier la macro de ConvNumberLetter pour ajouter la langue anglaise

Bonsour®
les règles d'écritures littérales des nombres et/ou valeurs numéraires sont très différentes d'une langue à l'autre,
il serait vain de vouloir intégrer dans une seule macro ces différences... ainsi que l'exhaustivité des langues :(

prévoir une macro par langue, puis selon la langue désirée appliquer la macro adéquate...
:rolleyes:
 

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55