[VB6] Conversion chiffres-lettres
Résolu/Fermé
mannylikita
Messages postés
14
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
30 octobre 2003
-
25 oct. 2003 à 13:06
wpjo Messages postés 1 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 27 mars 2018 - 27 mars 2018 à 10:20
wpjo Messages postés 1 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 27 mars 2018 - 27 mars 2018 à 10:20
A voir également:
- Algorithme conversion chiffre en lettre
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
- Excel trier par ordre croissant chiffre - Guide
- Convertir chiffre en lettre excel sans macro ✓ - Forum Excel
- Excel mois en lettre ✓ - Forum Excel
10 réponses
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
19 déc. 2004 à 21:15
16 mars 2005 à 22:57
Pas mal le code mais j'ai trouvé 2 Bug
100 = cents au lieu de cent et idem pour 20
bon courage
A+
27 mars 2018 à 10:20