Convertir des chiffres vers letttes

Résolu
majidane -  
 ali -
salut
j'ai realisé une aplication avec le gestionnaire d'atelier windev 7
mais le probléme si que je veux une fonction au un alogorithme qui fait convertir les chiffres vers des lettres
exmple:
10 dolar : dix dolar
4000 franc : quattre milles franc
merci d'avance

3 réponses

  1. badboy59 Messages postés 4292 Statut Contributeur 569
     
    c'est quoi la question ?
    0
  2. Jacques
     
    Bonjour,
    J'ai trouvé une solution Visual Basic sur internet. Il convient de l'adapter à votre contexte.

    Dim EngNum(90) As String
    Dim StringNum As String, Chunk As String, English As String
    Dim Hundreds As Integer, Tens As Integer, Ones As Integer
    Dim LoopCount As Integer, StartVal As Integer
    Dim TensDone As Integer
    Dim Pennies As String

    Static Function NumWord(ByVal AmountPassed As Currency) As String

    '** Convert a number to words for filling in the Amount of a check
    '** Example: NumWord(120.45) returns ONE HUNDRED TWENTY AND 45/100
    '** Can handle numbers from 0 to $999,999.99
    '** Created by Alan Simpson: Fax (619)756-0159
    '** First working version, not yet fully tuned for speed or brevity.

    '** The array below, and other variables, are dimensioned
    '** in the Declarations section.

    '** Fill EngNum array, if it's not filled already)
    If Not EngNum(1) = "One" Then
    EngNum(0) = ""
    EngNum(1) = "One"
    EngNum(2) = "Two"
    EngNum(3) = "Three"
    EngNum(4) = "Four"
    EngNum(5) = "Five"
    EngNum(6) = "Six"
    EngNum(7) = "Seven"
    EngNum(8) = "Eight"
    EngNum(9) = "Nine"
    EngNum(10) = "Ten"
    EngNum(11) = "Eleven"
    EngNum(12) = "Twelve"
    EngNum(13) = "Thirteen"
    EngNum(14) = "Fourteen"
    EngNum(15) = "Fifteen"
    EngNum(16) = "Sixteen"
    EngNum(17) = "Seventeen"
    EngNum(18) = "Eighteen"
    EngNum(19) = "Nineteen"
    EngNum(20) = "Twenty"
    EngNum(30) = "Thirty"
    EngNum(40) = "Forty"
    EngNum(50) = "Fifty"
    EngNum(60) = "Sixty"
    EngNum(70) = "Seventy"
    EngNum(80) = "Eighty"
    EngNum(90) = "Ninety"
    End If

    '** Convert incoming Currency value to a string for parsing.
    StringNum = Format$(AmountPassed, "000000.00")

    '** Initialize other variables
    English = ""
    LoopCount = 1
    StartVal = 1
    Pennies = Mid$(StringNum, 8, 2)

    '** Just in case the check is for less than a buck...
    If AmountPassed < 1 Then
    English = "Zero"
    End If

    '** Now do each 3-digit section of number.
    While LoopCount <= 2
    Chunk = Mid$(StringNum, StartVal, 3)
    Hundreds = Val(Mid$(Chunk, 1, 1))
    Tens = Val(Mid$(Chunk, 2, 2))
    Ones = Val(Mid$(Chunk, 3, 1))

    '** Do the hundreds portion of 3-digit number
    If Val(Chunk) > 99 Then
    English = English & EngNum(Hundreds) & " Hundred "
    End If

    '** Do the tens & ones portion of 3-digit number
    TensDone = False

    '** Is it less than 10?
    If Tens < 10 Then
    English = English & " " & EngNum(Ones)
    TensDone = True
    End If

    '** Is it a teen?
    If (Tens >= 11 And Tens <= 19) Then
    English = English & EngNum(Tens)
    TensDone = True
    End If

    '** Is it Evenly Divisible by 10?
    If (Tens / 10#) = Int(Tens / 10#) Then
    English = English & EngNum(Tens)
    TensDone = True
    End If

    '** Or is it none of the above?
    If Not TensDone Then
    English = English & EngNum((Int(Tens / 10)) * 10)
    English = English & " " & EngNum(Ones)
    End If

    '** Add the word "thousand" if necessary.
    If AmountPassed > 999.99 And LoopCount = 1 Then
    English = English + " Thousand "
    End If

    '** Do pass through second three digits
    LoopCount = LoopCount + 1
    StartVal = 4
    Wend
    '** Done: Return english with pennies tacked on.
    NumWord = Trim(English) & " and " & Pennies & "/100"

    End Function

    Bon courage, il y a du travail
    Cordialement
    0