Convertir un integer en string (chiffres en toutes lettres)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 736 fois - Téléchargée 34 fois

Contenu du snippet

Re pour aujourd hui :)

Deux petites fonctions pratiques pour convertir une somme en euros et centimes integer en chaine de caractères donc en toutes lettres :)

dites moi si il y a des bugs thx !

Source / Exemple :


Function TRAD_mt(Mt As Currency) As String
' la fonction de traduit pas au dela de 999 999 999
' car la fonction mod produit un depassement de capacité
Dim TExt As String, EXp1 As String
Dim VAleur As Currency
Dim ENtier As Integer, UNite As Integer
    If Mt > 999999999.99 Then
        TRAD_mt = "MONTANT TROP IMPORTANT"
        Exit Function
    End If
    If Mt = 0 Then
        TRAD_mt = "ZERO EURO ZERO CTS"
        Exit Function
    End If
    VAleur = Abs(Mt)
    VAleur = VAleur * 100
    ENtier = CInt(Mid(CStr(VAleur), Len(CStr(VAleur)) - 1, 2))
    If ENtier <> 0 Then
        TExt = MONt(ENtier) & "CTS"
    Else
        TExt = ""
    End If
    VAleur = Int(VAleur / 100)
    If (VAleur Mod 1000000) <> 0 Then
        TExt = "EUROS " & TExt
    Else
        If VAleur <> 0 Then
            TExt = "D' EUROS " & TExt
        End If
    End If
    UNite = 0
    Do Until VAleur = 0
        ENtier = VAleur Mod 1000
        If ENtier = 0 Then
            VAleur = Int(VAleur / 1000)
        Else
            ENtier = VAleur Mod 100
            If ENtier > 1 And UNite > 1 Then
                TExt = "S " & TExt
            Else
                TExt = " " & TExt
            End If
            Select Case UNite
                Case 0
                Case 1
                    TExt = "MILLE" & TExt
                Case 2
                    TExt = "MILLION" & TExt
                Case 3
                    TExt = "MILLIARD" & TExt
                Case Else
                    TExt = "ERREUR " & TExt
            End Select
            If ENtier <> 0 Then
                If ENtier > 1 Or UNite > 1 Then
                    TExt = MONt(ENtier) & TExt
                ElseIf ENtier = 1 And UNite = 0 Then
                    TExt = MONt(ENtier) & TExt
                End If
            End If
            VAleur = Int(VAleur / 100)
            ENtier = VAleur Mod 10
            If ENtier <> 0 Then
                TExt = "CENT " & TExt
                If ENtier <> 1 Then
                    TExt = MONt(ENtier) & TExt
                End If
            End If
            VAleur = Int(VAleur / 10)
        End If
        UNite = UNite + 1
    Loop
    If Mt < 0 Then
        TExt = "MOINS " & TExt
    End If
    TRAD_mt = TExt
End Function
Function MONt(Mt As Integer) As String
    Select Case Mt
        Case 1
            MONt = "UN "
        Case 2
            MONt = "DEUX "
        Case 3
            MONt = "TROIS "
        Case 4
            MONt = "QUATRE "
        Case 5
            MONt = "CINQ "
        Case 6
            MONt = "SIX "
        Case 7
            MONt = "SEPT "
        Case 8
            MONt = "HUIT "
        Case 9
            MONt = "NEUF "
        Case 10
            MONt = "DIX "
        Case 11
            MONt = "ONZE "
        Case 12
            MONt = "DOUZE "
        Case 13
            MONt = "TREIZE "
        Case 14
            MONt = "QUATORZE "
        Case 15
            MONt = "QUINZE "
        Case 16
            MONt = "SEIZE "
        Case 17
            MONt = "DIX-SEPT "
        Case 18
            MONt = "DIX-HUIT "
        Case 19
            MONt = "DIX-NEUF "
        Case 20
            MONt = "VINGT "
        Case 21
            MONt = "VINGT ET UN "
        Case 22
            MONt = "VINGT DEUX "
        Case 23
            MONt = "VINGT TROIS "
        Case 24
            MONt = "VINGT QUATRE "
        Case 25
            MONt = "VINGT CINQ "
        Case 26
            MONt = "VINGT SIX "
        Case 27
            MONt = "VINGT SEPT "
        Case 28
            MONt = "VINGT HUIT "
        Case 29
            MONt = "VINGT NEUF "
        Case 30
            MONt = "TRENTE "
        Case 31
            MONt = "TRENTE ET UN "
        Case 32
            MONt = "TRENTE DEUX "
        Case 33
            MONt = "TRENTE TROIS "
        Case 34
            MONt = "TRENTE QUATRE "
        Case 35
            MONt = "TRENTE CINQ "
        Case 36
            MONt = "TRENTE SIX "
        Case 37
            MONt = "TRENTE SEPT "
        Case 38
            MONt = "TRENTE HUIT "
        Case 39
            MONt = "TRENTE NEUF "
        Case 40
            MONt = "QUARANTE "
        Case 41
            MONt = "QUARANTE ET UN "
        Case 42
            MONt = "QUARANTE DEUX "
        Case 43
            MONt = "QUARANTE TROIS "
        Case 44
            MONt = "QUARANTE QUATRE "
        Case 45
            MONt = "QUARANTE CINQ "
        Case 46
            MONt = "QUARANTE SIX "
        Case 47
            MONt = "QUARANTE SEPT "
        Case 48
            MONt = "QUARANTE HUIT "
        Case 49
            MONt = "QUARANTE NEUF "
        Case 50
            MONt = "CINQUANTE "
        Case 51
            MONt = "CINQUANTE ET UN "
        Case 52
            MONt = "CINQUANTE DEUX "
        Case 53
            MONt = "CINQUANTE TROIS "
        Case 54
            MONt = "CINQUANTE QUATRE "
        Case 55
            MONt = "CINQUANTE CINQ "
        Case 56
            MONt = "CINQUANTE SIX "
        Case 57
            MONt = "CINQUANTE SEPT "
        Case 58
            MONt = "CINQUANTE HUIT "
        Case 59
            MONt = "CINQUANTE NEUF "
        Case 60
            MONt = "SOIXANTE "
        Case 61
            MONt = "SOIXANTE ET UN "
        Case 62
            MONt = "SOIXANTE DEUX "
        Case 63
            MONt = "SOIXANTE TROIS "
        Case 64
            MONt = "SOIXANTE QUATRE "
        Case 65
            MONt = "SOIXANTE CINQ "
        Case 66
            MONt = "SOIXANTE SIX "
        Case 67
            MONt = "SOIXANTE SEPT "
        Case 68
            MONt = "SOIXANTE HUIT "
        Case 69
            MONt = "SOIXANTE NEUF "
        Case 70
            MONt = "SOIXANTE DIX "
        Case 71
            MONt = "SOIXANTE ET ONZE "
        Case 72
            MONt = "SOIXANTE DOUZE "
        Case 73
            MONt = "SOIXANTE TREIZE "
        Case 74
            MONt = "SOIXANTE QUATORZE "
        Case 75
            MONt = "SOIXANTE QUINZE "
        Case 76
            MONt = "SOIXANTE SEIZE "
        Case 77
            MONt = "SOIXANTE DIX SEPT "
        Case 78
            MONt = "SOIXANTE DIX HUIT "
        Case 79
            MONt = "SOIXANTE DIX NEUF "
        Case 80
            MONt = "QUATRE VINGT "
        Case 81
            MONt = "QUATRE VINGT UN "
        Case 82
            MONt = "QUATRE VINGT DEUX "
        Case 83
            MONt = "QUATRE VINGT TROIS "
        Case 84
            MONt = "QUATRE VINGT QUATRE "
        Case 85
            MONt = "QUATRE VINGT CINQ "
        Case 86
            MONt = "QUATRE VINGT SIX "
        Case 87
            MONt = "QUATRE VINGT SEPT "
        Case 88
            MONt = "QUATRE VINGT HUIT "
        Case 89
            MONt = "QUATRE VINGT NEUF "
        Case 90
            MONt = "QUATRE VINGT DIX "
        Case 91
            MONt = "QUATRE VINGT ONZE "
        Case 92
            MONt = "QUATRE VINGT DOUZE "
        Case 93
            MONt = "QUATRE VINGT TREIZE "
        Case 94
            MONt = "QUATRE VINGT QUATORZE "
        Case 95
            MONt = "QUATRE VINGT QUINZE "
        Case 96
            MONt = "QUATRE VINGT SEIZE "
        Case 97
            MONt = "QUATRE VINGT DIX SEPT "
        Case 98
            MONt = "QUATRE VINGT DIX HUIT "
        Case 99
            MONt = "QUATRE VINGT DIX NEUF "
        Case Else
            MONt = "ERREUR .."
    End Select
End Function

A voir également

Ajouter un commentaire Commentaires
Messages postés
241
Date d'inscription
jeudi 8 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2005

C'est un bel exemple pour ceux qui travaillent sur l'intelligence artificielle: dans 2 ans les caissières du supermarché seront remplacées par madame VB! (2 ans ou moins).

Pour le long select case, un zoli tableau de string ferait l' affaire:
dim tabl() as string
tab(1)="un"
tab(2)="deux"
ainsi le long select case deviendrait une seule ligne:
MONt=tabl(Mt)

En outre, autre méthode: pourquoi pas gérer un tableau pour les dizaines et un pour les chiffres entiers? Toujours dans le but de réduire la taille de ce long select case.
Messages postés
3
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
18 octobre 2004

Je me permets d'être surpris par le splendide select case de 1 à 99 alors qu'il existe d'autres méthodes moins "frappe au km"... J'en sais un peu pour avoir déjà écrit, il y a + de 20 ans, ce genre de chose version française, néerlandaise, anglaise et allemande.
Néanmoins, ça reste un exemple à étudier...
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

Du calme bobkiller. Il faut savoir accepter les critiques. Le problème des fautes d'orthographe, lorsque tu fais un code pour faire 'chiffres vers toutes lettres' est important.

Pour reprendre l'exemple plus haut, ton code doit respecter toutes les subtilités de la langue française : 300 (trois cents), 310 (trois cent dix). Pour les nombres inférieurs à dix centimes, il reste également un problème.

++
Moustachu
Messages postés
11
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
27 novembre 2006

J'adore ! On met des sources et on se fait tailler ! Mais faut arrêter un peu les gars ! Si vous avez rien d'autre à foutre qu'a critiquer faut pas vous pointer... Je partage et voilà ce qu'on récolte. Même si c'est déjà mit ou c pas le bon niveau de la source, là n'est pas l'intêret : l'intêret c'est l'opensource et le partage de codes... Je suis navré de voir des mecs parler comme ça...

DrJo45 c pas parce que tu t'es fais jeté par un code que t as même pas produit que tu dois venir enfoncer les autres. Et je vois pas ce qu'il a de plus évolué... enfin je dois être bête !

Et oui je fais des fautes d'ortho et alors? Je dois pu écrire c ça? Je dois pu partager car mes talents de programmeur en sont altéré? allé... vive les programmeurs !
Messages postés
16
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
23 juin 2006

Le code pour convertir des nombres en lettres a déjà été mis plein de fois sur Code Source et dans des versions bien plus évoluées.
Je ne vois pas bien l'intéret d'en rajouter une de plus qui n'ajoute rien à part des fautes de français !
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.