Les Allergies
Alimentaires
Posez votre question Signaler

[VB6] Conversion chiffres-lettres [Résolu/Fermé]

mannylikita 17Messages postés 27 février 2002Date d'inscription - Dernière réponse le 16 mars 2005 à 22:57
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
Lire la suite 

[VB6] Conversion chiffres-lettres »

17 réponses
Réponse
+36
moins plus
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

meriem - 19 déc. 2004 à 21:15
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
j-marc - 16 mars 2005 à 22:57
Bonjour,

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

100 = cents au lieu de cent et idem pour 20

bon courage

A+
Réponse
+14
moins plus


Public Function sommelettre(ByVal argument As Currency) As String
Dim entier As Double
Dim cts As Double

Dim resultat1 As String
Dim resultat2 As String

entier = Int(argument) ' Valeur entière
cts = (argument - entier) * 100 ' Valeur Centimes

resultat1 = somlet2(entier)
resultat2 = somlet2(cts)

If Trim(resultat1) <> "" Then
resultat1 = resultat1 & " Dinars "
End If
If Trim(resultat2) <> "" Then
resultat2 = resultat2 & " Cts"
End If
sommelettre = resultat1 & " et " & resultat2

End Function
'*************************************************************
' Fonction de conversion chiffres en lettres
'*************************************************************
Public Function somlet2(ByVal argument As Double) As String

Dim lettres As Variant
Dim unites As Variant
Dim dizaines As Variant
Dim centaines As Variant

Dim unite As Integer
Dim dix As Integer
Dim cent As Integer

Dim groupes As Variant
Dim chaine As String
Dim ng, nc As Integer
Dim i, j, k As Integer
Dim xx As String

chaine = Trim(Str(argument))
nc = Len(chaine) ' Nbre de chiffres


lettres = Array("", "mille", "million", "milliard", "billion")
unites = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", "dix huit", "dix neuf")
dizaines = Array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante dix", "quatre vingt", "quatre vingt dix")
centaines = Array("", "cent", "deux cents", "trois cents", "quatre cents", "cinq cents", "six cents", "sept cents", "huit cents", "neuf cents")

If argument = 0 Then
somlet2 = ""
Else
If nc Mod 3 > 0 Then
ng = Int(nc / 3) + 1 ' Nbre de groupes
Else
ng = nc / 3
End If
ReDim groupes(ng - 1)
chaine = String(ng * 3 - nc, " ") & chaine
nc = Len(chaine)
j = 0
For i = nc To 1 Step -3
xx = Mid(chaine, i - 2, i)
groupes(j) = xx
j = j + 1
Next
chaine = ""
For j = 0 To UBound(groupes)
unite = Val(Mid(groupes(j), 3, 1))
dix = Val(Mid(groupes(j), 2, 1))
If dix = 1 Or dix = 7 Or dix = 9 Then
dix = dix - 1
unite = unite + 10
End If
cent = Val(Mid(groupes(j), 1, 1))
chaine = centaines(cent) & " " & dizaines(dix) & " " & unites(unite) & " " & lettres(j) & " " & chaine
Next
somlet2 = chaine
End If
End Function

Réponse
+5
moins plus
j'avais trouvé ça, je ne sais plus où
pas complètement testé,
mais "simple"
.....
Il est au top pour la Belgique.
Mais le travail est déjà "mâché" pour la France
a+
Jean-Pol DAVID
www.peintures-david.com
ICQ 28394733

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
'
Static chiffre(1 To 19) '*** tableau contenant le nom des 16 premiers
nombres en lettres
chiffre(1) = "un"
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

dites moi si soucis.
Amir Kasmi - 13 mars 2005 à 18:42
Salut je voudrais que vous me donner ou et comment utliser ce code
Merci d'avance
Réponse
+2
moins plus
bonsoir

je viens de me connecter sur le site commentcamarche et je suis intéressé par la macro excel qui convertit des chiffres en lettres . cette application me sera très utile dans mes tâches quotidiennes

par avance je vous remercie de votre aide

Réponse
+0
moins plus
pourras tu étre plus claire, me dir exactement se que tu veux obtenir.
Par exemple si tu veux que le 0 devienne un a; le 1 devienne un b (c'est ça ?)

mannylikita- 30 oct. 2003 à 12:11
Bonjour,
Par la présente je vous vous remercie de votre sens de collaboration. en effet je cherche l'astuce en Visual-Basic pour convertir automatiquement un chiffre ou un nombre directement en lettres comme le fait Morefun en excel; par exemple 10.500 s'écrira dix mille cinq cents....65 s'ecrira soixante cinq.
Bonne comprehension et au plaisir de se retrouver

Ir. Manny LIKITA
Tél: (00243) 98248846
:(00243)812503297
patrick - 5 déc. 2003 à 19:08
bonjour
je suis aussi interressé par la conversion chiffres lettres dans excel
qu'est-ce que morefun.dll et ou le trouver ??
merci de vos suggestions
FraKtaL - 6 déc. 2003 à 00:44
VB ne propose pas, bien sur, une fonction qui fasse ça automatiqument.

Il existe peut etre des composants activeX qui le fassent, l'equivalent de morefun.dll, mais j'en doute

La seule solution est, a mon avis, de creer son propre algorithme.

OK c pas facile...
mais pas impossible

Pour ceux qui sont motivés :
http://yann.coscoy.free.fr/nombre/info.html

trouvé en tapant
algorithme nombre en toutes lettres
dans google

et un truc qui plus parlant ecrit dans un langage proche du VB :
http://www.opl32.com/Trucs/String/NbEnTxt.htm

FraKtaL
Réponse
+0
moins plus
Bonjour,

Merci de m'aider à avoir une macro qui puisse transformer les chiffres en lettre (ex: 10 = dix).
Je vous en serai très reconnaissant.
Amicalement

Réponse
+0
moins plus
saluti !
J'aimerai beaucoup recevoir cette superbe fonction de conversion des chiffres en lettres ex 1OO - Cent
merci

Réponse
+0
moins plus
j'aimerai télécharger le programme de conversion chiffre en lettre

fred - 6 mai 2004 à 09:29
le code de cette celebre founction se trouve sur dejà sur ce post
Réponse
+0
moins plus
Salut, j'aimerais savoir comment afficher une date en lettre.
Merci!

Réponse
+0
moins plus
salut tous le monde je voudrais le programme en question transformer les chiffres en lettres
merci

Ce document intitulé « [VB6] Conversion chiffres-lettres » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?