Conversion( chiffres en lettres) [Résolu]

Messages postés
1
Date d'inscription
mardi 24 octobre 2006
Statut
Membre
Dernière intervention
21 novembre 2006
- - Dernière réponse : cs_agh
Messages postés
36
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 novembre 2011
- 13 août 2009 à 19:46
bonjour tout le monde
       je cherche comment faire pour convertir un chiffre en lettre en utilisant deux deux zone de texte : une pour saisir le nombre et une autre pour l'afficher en lettre et un bouton de cmd qui va declencher l'evenement  , merci d'avance.
Afficher la suite 

15 réponses

Meilleure réponse
Messages postés
148
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
4 décembre 2008
3
Merci
te veux dire 1 = un ?
dans ce cas va falloir saisir tous les nombres possibles (un, deux, trois, ..., dix, vingts,...,cent, mille ...)
Moi je voi que ca comme solution ...
Quand je suis là tout va mal  

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de leSaleGauSS
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
J'ai bien fait une application pour celà. Traduction en Français-Français, en Français-Belge, en Anglais, en Espagnol... et une (assez drôle) en jmfien (langage inconnu, sauf de moi).... mais n'ose pas l'étaler ici... (suis timide).

On la veut ?
yakadir ==>> je l'offrirai en source.
Commenter la réponse de jmfmarques
Messages postés
148
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
4 décembre 2008
0
Merci
Tu ve dire quoi par francais-francais ?

Quand je suis là tout va mal  
Commenter la réponse de leSaleGauSS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
77
0
Merci
Heu... recherche dans les sources... comme indiqué dans le point 1 du règlement !!!

Et oui, tu sais le gros lien en rouge qui s'est affiché lorsque tu as posé ta question, il est pas là pour faire joli !
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Pour te répondre, meSaleGauss :
En français, par exemple, on ne dit pas septante-et-un mais soisxante-et-onze
Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
soixante, pardon (gros doigts)
Commenter la réponse de jmfmarques
Messages postés
148
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
4 décembre 2008
0
Merci
Ha d'accord (petit doigts)...
Quand je suis là tout va mal  
Commenter la réponse de leSaleGauSS
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007
0
Merci
Salut,

Voici un code que j'avais péché il y a longtemps sur le site d'un certain CanisLupus et dont je ne retrouve pas l'URL. Ce code fonctionne très bien pour le français/français (à mettre dans un module) :

'
' ---------------------------------------------
' FONCTION DE TRADUCTION D'UN NOMBRE EN LETTRES
' ---------------------------------------------
'
Option Explicit
Option Base 1


Public Unité As Variant
Public Dizaine As Variant
Public Décimales As Currency
Public CasPart As Variant
Public Lettres As String
Public Cent_Pluriel As Boolean
Public Vingt_Pluriel As Boolean


'
' -------------------
' FONCTION PRINCIPALE
' -------------------
'
Function NombresEnLettres_EURO(Nombre As Currency) As String


' Limitation à 999 999 999 999 . 99
    If Nombre >= 1000000000000# Then
        MsgBox "Ce nombre est trop grand !", 0, "Message"
        Exit Function
    End If
   
' Initialisation des tableaux
    Unité = Array("UN", "DEUX", "TROIS", "QUATRE", "CINQ", "SIX", "SEPT", "HUIT", "NEUF")
    Dizaine = Array("DIX", "VINGT", "TRENTE", "QUARANTE", "CINQUANTE", "SOIXANTE", "SOIXANTE", "QUATRE-VINGT", "QUATRE-VINGT")
    CasPart = Array("DIX", "ONZE", "DOUZE", "TREIZE", "QUATORZE", "QUINZE", "SEIZE")
   
' Mise à vide de la chaîne de réception de la traduction du nombre
    Lettres = ""
   
' Initialisation des indicateurs de pluriel des nombres cent et vingt
    Cent_Pluriel = True
    Vingt_Pluriel = True
   
' Conversion de la partie décimale en un nombre de 0 à 99
' arrondi à l'unité la plus proche
    Décimales = CInt((Nombre - Fix(Nombre)) * 100)
   
' Conservation de la partie entière du nombre
    Nombre = Fix(Nombre)
   
' Orientation du traitement suivant valeur de la partie entière
    Select Case Nombre
        Case 0
            Lettres = "ZERO"
        Case 1 To 9
            Lettres = Unité(CInt(Nombre))
        Case 10 To 99
            Trt_Dizaines Nombre
        Case 100 To 999
            Trt_Centaines Nombre
        Case 1000 To 999999999999#
            Trt_Multiples_de_Mille Nombre
    End Select
      
' Indication de la monnaie
    If Nombre > 1 Then
        Lettres = Lettres & " EUROS "
    Else
        Lettres = Lettres & " EURO "
    End If


' Orientation du traitement suivant valeur de la partie décimale
    Select Case Décimales
        Case 1 To 9
            Lettres = Lettres & Unité(CInt(Décimales))
        Case 10 To 99
            Trt_Dizaines Décimales
    End Select
       
' Indication des centimes
    Select Case Décimales
        Case 1
            Lettres = Lettres & " CENT"
        Case Is > 1
            Lettres = Lettres & " CENTS"
    End Select


' Renvoi du nombre traduit en lettres
    NombresEnLettres_EURO = Lettres
   
End Function


'
' --------------------------------
' TRAITEMENT DES MULTIPLES DE 1000
' --------------------------------
'
Sub Trt_Multiples_de_Mille(Nombre As Currency)


Dim Rank As Currency
Dim Nom_Rang As String
Dim Reste As Currency


    Cent_Pluriel = False
    Vingt_Pluriel = False
   
' Initialisation suivant taille du nombre : milliers, millions ou milliards
    Select Case Nombre
        Case 1000 To 999999
            Rank = Fix(Nombre / 1000)
            Reste = Nombre Mod 1000
            Nom_Rang = "MILLE"
        Case 1000000 To 999999999
            Rank = Fix(Nombre / 1000000)
            Reste = Nombre Mod 1000000
            If Rank > 1 Then
                Nom_Rang = "MILLIONS"
            Else
                Nom_Rang = "MILLION"
            End If
        Case Is > 999999999
            Rank = Fix(Nombre / 1000000000)
            Reste = Nombre - Rank * 1000000000
            If Rank > 1 Then
                Nom_Rang = "MILLIARDS"
            Else
                Nom_Rang = "MILLIARD"
            End If
    End Select
   
' Traitement du rang des milliers, millions ou milliards
    Select Case Rank
        Case 1
            If Nom_Rang = "MILLE" Then
                Lettres = Lettres & Nom_Rang
            Else
                Lettres = Lettres & Unité(CInt(Rank)) & " " & Nom_Rang
            End If
        Case 2 To 9
            Lettres = Lettres & Unité(CInt(Rank)) & " " & Nom_Rang
        Case 10 To 99
            Trt_Dizaines (Rank)
            Lettres = Lettres & " " & Nom_Rang
        Case 100 To 999
            Trt_Centaines Rank
            Lettres = Lettres & " " & Nom_Rang
    End Select
       
    Cent_Pluriel = True
    Vingt_Pluriel = True
       
' Orientation du traitement du reste si > 0
    Select Case Reste
        Case 1 To 9
            Lettres = Lettres & " " & Unité(CInt(Reste))
        Case 10 To 99
            Lettres = Lettres & " "
            Trt_Dizaines Reste
        Case 100 To 999
            Lettres = Lettres & " "
            Trt_Centaines Reste
        Case Is > 999
            Lettres = Lettres & " "
            Trt_Multiples_de_Mille Reste
    End Select
   
    Lettres = Lettres


End Sub


'
' -----------------------------------
' TRAITEMENT DES NOMBRES DE 100 à 999
' -----------------------------------
'
Sub Trt_Centaines(Nombre As Currency)


Dim Rank As Currency
Dim Reste As Currency


    Rank = Fix(Nombre / 100)
    Reste = Nombre Mod 100
   
' Traitement du rang des centaines
    If Rank = 1 Then
        Lettres = Lettres & "CENT"
    Else
        If Reste = 0 And Cent_Pluriel Then
            Lettres = Lettres & Unité(CInt(Rank)) & " " & "CENTS"
        Else
            Lettres = Lettres & Unité(CInt(Rank)) & " " & "CENT"
        End If
    End If
   
' Traitement du reste < 100
    Select Case Reste
        Case 1 To 9
            Lettres = Lettres & " " & Unité(CInt(Reste))
        Case Is > 9
            Lettres = Lettres & " "
            Vingt_Pluriel = True
            Trt_Dizaines (Reste)
    End Select
       
End Sub


'
' ---------------------------------
' TRAITEMENT DES NOMBRES DE 10 à 99
' ---------------------------------
'
Sub Trt_Dizaines(Nombre As Currency)


Dim Reste As Integer
Dim Rank As Integer


    Rank = Fix(Nombre / 10)
    Reste = Nombre Mod 10
   
    Select Case Rank
        Case 1
            If Reste < 7 Then
                ' Nombres 10 à 16
                Lettres = Lettres & CasPart(Reste + 1)
            Else
                ' Nombres 17 à 19
                Lettres = Lettres & Dizaine(Rank) & "-" & Unité(CInt(Reste))
            End If
        Case 7
            Select Case Reste
                Case 0
                    ' Nombre 70
                    Lettres = Lettres & Dizaine(Rank) & "-" & Dizaine(Reste + 1)
                Case 1
                    ' Nombre 71
                    Lettres = Lettres & Dizaine(Rank) & " ET " & CasPart(Reste + 1)
                Case Else
                    If Reste < 7 Then
                    ' Nombres 72 à 76
                        Lettres = Lettres & Dizaine(Rank) & "-" & CasPart(Reste + 1)
                    Else
                    ' Nombres 77 à 79
                        Lettres = Lettres & Dizaine(Rank) & "-" & CasPart(1) & "-" & Unité(CInt(Reste))
                    End If
            End Select
        Case 8
            Lettres = Lettres & Dizaine(Rank)
            If Reste = 0 Then
                ' Nombre 80
                If Vingt_Pluriel Then
                    Lettres = Lettres & "S"
                End If
            Else
                ' Nombres 81 à 89
                Lettres = Lettres & "-" & Unité(CInt(Reste))
            End If
        Case 9
            If Reste < 7 Then
                ' Nombres 90 à 96
                Lettres = Lettres & Dizaine(Rank) & "-" & CasPart(Reste + 1)
            Else
                ' Nombres 97 à 99
                Lettres = Lettres & Dizaine(Rank) & "-" & CasPart(1) & "-" & Unité(CInt(Reste))
            End If
        Case Else
            ' Nombres 20 à 69
            Select Case Reste
                Case 0
                    ' Nombres 20, 30, 40, 50, 60
                    Lettres = Lettres & Dizaine(Rank)
                Case 1
                    ' Nombres 21, 31, 41, 51, 61
                    Lettres = Lettres & Dizaine(Rank) & " ET " & Unité(CInt(Reste))
                Case Else
                    ' Autres nombres
                    Lettres = Lettres & Dizaine(Rank) & "-" & Unité(CInt(Reste))
            End Select
    End Select
   
End Sub


 
Commenter la réponse de Dolphin Boy
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
0
Merci
Bonsoir,
Tu ne trouves pas que c' est un peu long, Flipper !
Le temps quie ça renvoie un résultat,
le cours de l' Euro aura changé


Il y' en a de plus performant.
Il n' a qu' à rechercher : Conversion de chiffres en lettres


 
Commenter la réponse de chaibat05
Messages postés
168
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
28 juillet 2009
0
Merci
Quelque soit ton niveau de compétence en VB, va faire un tour dans les FAQ qui sont présentes sur ce site.   Perso, je ne suis pas un débutant et, à la lecture des FAQs, j'ai appris des petits trucs & astuces qu'un vrai débutant aurait lu dans un bouquin pour débutant et aussi, et surtout, des sources prêts à l'emploi.

Convertir un chiffre en son homologue textuel est une fonction qui s'y trouve !  Juste copy/paste.

Christophe
Commenter la réponse de cavo789
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007
0
Merci
Ouaip Chaibat05, ça parait long comme code mais à l'utilisation c'est rapide. J'en ai même fait une macro Excel pour des comptables qui en sont très satisfaits.
Ceci dit, je n'ai pas testé tous les codes de ce genre et si tu en connais un moins long, plus rapide et qui fonctionne sans erreur je suis preneur.
Commenter la réponse de Dolphin Boy
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
0
Merci
Bonsoir DB ,
 En voilà un : http://www.vbfrance.com/codes/CONVERTION-CHIFFRES-LETTRES_39228.aspx


Il fait parti de mes rares sources.
je ne l' ai pas encore mis à jour,(par fainéantisme je l' avoue)
mais si tu suis ce qui a été dit dans les commentaires, tu pourras
le personnaliser à ta guise.
voici des extraits des commentaires :


"tu devrais remplacer le point du pavé numérique par une virgule, lors de la saisie, si les paramètres régionnaux sont réglés ainsi...
inutile de mettre des majuscules a chaque mot."


"On écrit "vingt-trois" et non "vingt trois" (idem pour toute
valeur comprise entre vingt et cent)."


"81 = "Quatre-vingt un" et non "Quatre-Vingt Et Un"
91 = "Quatre-vingt onze" et non "Quatre-Vingt et  Onze" (
Deux espace entre "et" et "onze"!!!)"

Tu verras en lisant le code , que c' est très facile de corriger
ces anomalies.

Ceci dit je ne suis pas contre un code long s' il est performant.
Parfois c' est même souhaitable.L' essentiel c' est qu' il soit clair,
bien structuré et qu' il n' est pas de redondance.
Sinon c' est difficile de s' y retrouver.Et quand tu as des modifications
à y apporter, tu risques de tout "chambouler".

Bon ce n' est pas pour faire l' éloge de ma source, mais je te laisse
le soin d' en juger par toi-même.

Passes une bonne soirée.
Commenter la réponse de chaibat05
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007
0
Merci
No problemo chaibat05. J'ai juste survolé ta source et il y a quelques idées intéressantes. Le multi devise par ex.
J'étudierai ça plus tard.

@++
Commenter la réponse de Dolphin Boy
Messages postés
11
Date d'inscription
jeudi 23 novembre 2006
Statut
Membre
Dernière intervention
5 février 2008
0
Merci
Va voir le code que j'ai déposé il repond à peu prés à ta demande :
une entrée en chiffres
une sortie en lettres
avec gestion des erreurs

la possibilité de sortie pour les particularités françaises, suisses et belges.
www.vbfrance.com/codes/CONVERTIR-CHIFFRES-LETTRES_42584.aspx
Lemlem
Commenter la réponse de cs_LEMLEM
Messages postés
36
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 novembre 2011
0
Merci
Merci Dolphin Boy pour ton code c interessant mais j'aimerai bien avoir le même code pour VB 2008 et Merci encore
Commenter la réponse de cs_agh