Conversion( chiffres en lettres)

Résolu
cs_benzaid Messages postés 1 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 21 novembre 2006 - 21 nov. 2006 à 20:29
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.
A voir également:

15 réponses

leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
21 nov. 2006 à 20:48
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  
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 nov. 2006 à 20:54
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.
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
21 nov. 2006 à 21:01
Tu ve dire quoi par francais-francais ?

Quand je suis là tout va mal  
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 nov. 2006 à 21:13
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 nov. 2006 à 21:23
Pour te répondre, meSaleGauss :
En français, par exemple, on ne dit pas septante-et-un mais soisxante-et-onze
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 nov. 2006 à 21:24
soixante, pardon (gros doigts)
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
21 nov. 2006 à 21:29
Ha d'accord (petit doigts)...
Quand je suis là tout va mal  
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
21 nov. 2006 à 22:49
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


 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 nov. 2006 à 00:40
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


 
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
22 nov. 2006 à 12:07
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
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
22 nov. 2006 à 20:02
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.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 nov. 2006 à 23:20
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.
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
23 nov. 2006 à 19:38
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.

@++
0
cs_LEMLEM Messages postés 11 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 5 février 2008
5 févr. 2008 à 20:15
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
0
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
Merci Dolphin Boy pour ton code c interessant mais j'aimerai bien avoir le même code pour VB 2008 et Merci encore
0
Rejoignez-nous