Ecrire un nombre en toute lettre

jayrock Messages postés 24 Date d'inscription vendredi 10 mai 2002 Statut Membre Dernière intervention 13 avril 2003 - 19 juil. 2002 à 16:49
olidbc Messages postés 20 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 26 juillet 2002 - 20 juil. 2002 à 00:15
Bonjour

J'aimerais savoir si quelqu'un a déjà fait un programme qui permet à partir d'une chaine de caractères "495" de traduire ça part "quatre cent quartre-vingt quinze". Est-ce que quelqu'un a une ID pour faire ça ?
Vous aurez compris que c'est pour faire des factures, donc est-ce que quelqu'un connait la clé de la base de registre qui contient le symbôle monétaire ?

Merci

jayrock

1 réponse

olidbc Messages postés 20 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 26 juillet 2002
20 juil. 2002 à 00:15
j'ai fait ca ya tres pas longtemp...

la fonction EuroToText(<montant>) retourne le <montant> en texte.

ex. MsgBox EuroToText("495")

Olivier.

---------------------


Private Function EuroToText(ByVal montant As Double) As String

pos = InStr(1, CStr(montant), ",")
If pos > 0 Then
    lp = Mid$(CStr(montant), 1, pos - 1)
    rp = Mid$(CStr(montant), pos + 1, Len(CStr(montant)) - pos + 1)
Else
    lp = CStr(montant)
End If

Dim tmpStr As String
tmpStr = vbNullString

cent = lp - (Int(lp / 1000) * 1000)
mil = Int(lp / 1000)
 
If mil = 1 Then
    tmpStr = "MILLE"
ElseIf mil > 1 Then
    tmpStr = CentaineToText(mil) & " MILLE"
End If

If cent > 0 Then
    tmpStr = Trim(tmpStr) & " " & CentaineToText(cent) & " €URO(S)"
End If

EuroToText = tmpStr

End Function

Private Function CentaineToText(ByVal montant As Integer) As String

    cent = Int(montant / 100)
    unit = montant - (cent * 100)
    
    tmpStr = vbNullString
        
    If cent > 0 Then
        
        If cent > 1 Then tmpStr = val2str(cent)
        
        If unit = 0 Then
            tmpStr = tmpStr & " CENT"
        Else
            tmpStr = tmpStr & " CENTS"
        End If
    
    End If
    
    
    tmpStr = tmpStr & " " & val2str(unit)
        
    CentaineToText = tmpStr

End Function
    
Public Function val2str(ByVal value As Integer) As String
    
    Select Case value
        Case 0:
        Case 1: tmpStr = "UN"
        Case 2: tmpStr = "DEUX"
        Case 3: tmpStr = "TROIS"
        Case 4: tmpStr = "QUATRE"
        Case 5: tmpStr = "CINQ"
        Case 6: tmpStr = "SIX"
        Case 7: tmpStr = "SEPT"
        Case 8: tmpStr = "HUIT"
        Case 9: tmpStr = "NEUF"
        Case 10: tmpStr = "DIX"
        Case 11: tmpStr = "ONZE"
        Case 12: tmpStr = "DOUZE"
        Case 13: tmpStr = "TREIZE"
        Case 14: tmpStr = "QUATORZE"
        Case 15: tmpStr = "QUINZE"
        Case 16: tmpStr = "SEIZE"
        Case 20: tmpStr = "VINGT"
        Case 30: tmpStr = "TRENTE"
        Case 40: tmpStr = "QUARANTE"
        Case 50: tmpStr = "CINQUANTE"
        Case 60: tmpStr = "SOIXANTE"
        
        Case Is >= 90:
            tmpStr = val2str(4) & "-" & val2str(20) & " " & val2str(value - 80)
        
        Case Is >= 70:
            tmpStr = val2str(60) & " " & val2str(value - 60)
        
        Case Is > 16: '2x,3x,4x,5x,6x
            
            diz = Int(value / 10) * 10
            unit = value - diz
            Select Case unit
                Case 1
                    tmpStr = val2str(diz) & " ET UN"
                Case Is > 1
                    tmpStr = val2str(diz) & " " & val2str(unit)
            End Select
            
        Case Is > 16:
            tmpStr = val2str(10) & "-" & val2str(value - 10)
        
        Case Else: tmpStr = vbullstring
    End Select
    val2str = tmpStr
End Function

0
Rejoignez-nous