[VB6] Conversion chiffres-lettres

Résolu/Fermé
mannylikita Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
wpjo Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -
Comment peux-je convertir des chiffres(nombres) en lettres en VB6; en excel je fais ça avec morefun.dll
Compte sur votre collaboration

Ir. Manny LIKITA
Tél: (00243) 98248846
A voir également:

10 réponses

fred
 
voila le code intégral de la founction tant recherchée :
Function NBenLettres(nb)         
'         
Dim varnum, varnumD, varnumU, varlet  ', résultat         
'         
'varnum : pour stocker les parties du nombre que l'on va découper         
'varlet : pour stocker la conversion en lettres d'une partie du nombre         
'varnumD : pour stocker la partie dizaine d'un nombre à 2 chiffres         
'varnumU : pour stocker la partie unité d'un nombre à 2 chiffres         
'résultat : pour stocker les résultats intermédiaires des différentes étapes  Mille vingt-cinq Euros      
'         
Static chiffre(1 To 19) '*** tableau contenant le nom des 16 premiers  Cents Euros       
nombres en lettres         
chiffre(1) = "un"  Cents Euros et quinze centimes     
chiffre(2) = "deux"         
chiffre(3) = "trois"         
chiffre(4) = "quatre"         
chiffre(5) = "cinq"         
chiffre(6) = "six"         
chiffre(7) = "sept"         
chiffre(8) = "huit"         
chiffre(9) = "neuf"         
chiffre(10) = "dix"         
chiffre(11) = "onze"         
chiffre(12) = "douze"         
chiffre(13) = "treize"         
chiffre(14) = "quatorze"         
chiffre(15) = "quinze"         
chiffre(16) = "seize"         
chiffre(17) = "dix-sept"         
chiffre(18) = "dix-huit"         
chiffre(19) = "dix-neuf"         
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines         
dizaine(1) = "dix"         
dizaine(2) = "vingt"         
dizaine(3) = "trente"         
dizaine(4) = "quarante"         
dizaine(5) = "cinquante"         
dizaine(6) = "soixante"         
dizaine(7) = "soixante-dix"         
dizaine(8) = "quatre-vingt"         
dizaine(9) = "quatre-vingt-dix"         
'         
'*** Traitement du cas zéro franc         
'         
If nb >= 1 Then         
                résultat = ""         
        Else         
                résultat = "zéro"         
                GoTo fintraitementfrancs         
End If         
'         
'*** Traitement des millions         
'         
varnum = Int(nb / 1000000)         
If varnum > 0 Then         
        GoSub centaine_dizaine         
        résultat = varlet + " million"         
        If varlet <> "un" Then résultat = résultat + "s"         
End If         
'         
'*** Traitement des milliers         
'         
varnum = Int(nb) Mod 1000000         
varnum = Int(varnum / 1000)         
If varnum > 0 Then         
        GoSub centaine_dizaine         
        If varlet <> "un" Then résultat = résultat + " " + varlet         
        résultat = résultat + " mille"         
End If         
'         
'*** Traitement des centaines et dizaines         
'         
varnum = Int(nb) Mod 1000         
If varnum > 0 Then         
        GoSub centaine_dizaine         
        résultat = résultat + " " + varlet         
End If         
résultat = LTrim(résultat)         
varlet = Right$(résultat, 4)         
'         
'*** Traitement du "s" final pour vingt et cent et du "de" pour million         
'         
Select Case varlet         
        Case "cent", "ingt"         
                résultat = résultat + "s"         
        Case "lion", "ions"         
                résultat = résultat + " de"         
End Select         
          
fintraitementfrancs: '*** Etiquette de branchement pour le cas "zéro franc"         
'         
'*** Indication du terme franc         
'         
résultat = résultat + " euro"         
If nb >= 2 Then résultat = résultat + "s"         
'         
'*** Traitement des centimes         
'         
varnum = Int((nb - Int(nb)) * 100 + 0.5) '*** On additionne 0,5         
'*** afin de compenser les erreurs de calcul dues aux arrondis         
If varnum > 0 Then         
        GoSub centaine_dizaine         
        résultat = résultat + " et " + varlet + " centime"         
        If varnum > 1 Then résultat = résultat + "s"         
End If         
'         
'*** Conversion 1ère lettre en majuscule         
'         
résultat = UCase(Left(résultat, 1)) + Right(résultat, Len(résultat) - 1)         
'         
'*** renvoie du résultat de la fonction et fin de la fonction         
'         
NBenLettres = résultat         
Exit Function         
          
centaine_dizaine: '*** Sous-programme de conversion en lettres         
'         
'*** des centaines et dizaines         
'         
varlet = ""         
'         
'*** Traitement des centaines         
'         
If varnum >= 100 Then         
        varlet = chiffre(Int(varnum / 100))         
        varnum = varnum Mod 100         
        If varlet = "un" Then         
                        varlet = "cent "         
                Else         
                        varlet = varlet + " cent "         
        End If         
End If         
'         
'*** Traitement des dizaines         
'         
If varnum <= 19 Then '*** Cas où la dizaine est <20         
                If varnum > 0 Then varlet = varlet + chiffre(varnum)         
        Else '*** Autres cas         
                varnumD = Int(varnum / 10) '*** chiffre des dizaines         
                varnumU = varnum Mod 10 '*** chiffre des unités         
'''Select Case varnumD '*** génération des dizaines en lettres         
                varlet = varlet + dizaine(varnumD)         
'''Case Is <= 5         
'''varlet = varlet + dizaine(varnumD)         
'''Case 6, 7         
'''varlet = varlet + dizaine(6)         
'''Case 8, 9         
'''varlet = varlet + dizaine(8)         
'''End Select         
'         
'*** traitement du séparateur des dizaines et unités         
'         
                If varnumU = 1 And varnumD < 8 Then         
                                varlet = varlet + " et "         
                        Else         
                                If varnumU <> 0 Then         
                                        varlet = varlet + "-" '''Or varnumD = 7 Or varnumD = 9         
                                End If         
                End If         
'         
'*** génération des unités         
'         
'''If varnumD = 7 Or varnumD = 9 Then varnumU = varnumU + 10         
                If varnumU <> 0 Then varlet = varlet + chiffre(varnumU)         
End If         
'         
'*** Suppression des espaces à gauche et retour         
'         
varlet = RTrim(varlet)         
Return         
End Function
59
meriem
 
salut j'ai un projet de conversion chiffre lettre mais pas en VB plutot en C alors si c'est possible de me l'envoyer c'est tres urgens
0
j-marc
 
Bonjour,

Pas mal le code mais j'ai trouvé 2 Bug

100 = cents au lieu de cent et idem pour 20

bon courage

A+
0
wpjo Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
Exactement. Il fallait bien comprendre que notre système n'est pas vraiment décimal mais un mélange entre un système basé sur '10' et un autre basé sur '20'. Dès qu'on a compris cela, le code coule de source.
0