begin process at 2012 02 04 08:34:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CONVERTISSEUR CHIFFRES - LETTRES (POUR CHÈQUES PAR EXEMPLE)

CONVERTISSEUR CHIFFRES - LETTRES (POUR CHÈQUES PAR EXEMPLE)


 Information sur la source

Note :
3,67 / 10 - par 3 personnes
3,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Source .NET ( DotNet ) Classé sous :chiffre, lettre, convertisseur Niveau :Débutant Date de création :26/03/2004 Vu / téléchargé :29 345 / 30 979

Auteur : fulljuju

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Voilà, c'est juste un petit code permettant de transformer un truc du type "123.51" en "cent vingt trois euros cinquante et un centimes".
Je me suis moi même inspiré d'une source c++ que j'ai transformée en c# et optimisée (ajout des chiffres après la virgule, et correction des erreurs existantes).

Ca peut servir par exemple pour des impressions de chèques (pour pas avoir le montant à taper à la main...)


 Conclusion

1er code ajouté ! Merci pour le site bien sympa quand on débute et quand on est dans la m...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) SAUVEGARDE DES TAILLES ET LOCATIONS DES FENÊTRES. par cryt3k
Source avec Zip Source avec une capture Source .NET (Dotnet) TENNIS STATISTIQUES par thebigboss
Source avec Zip Source .NET (Dotnet) TRANSFERT DE DONNÉES, SÉRIALIZATION XML POUR WINFORM par l0r3nz1
Source avec une capture Source .NET (Dotnet) CONTRÔLE TEXTBOX VALIDATEUR par monsieurx12
Source avec Zip Source avec une capture Source .NET (Dotnet) PANEL IRC AVEC MARGE DEPLACABLE ET BACKGROUND IMAGE par yohan49

 Sources en rapport avec celle ci

Source avec Zip CONVERSION DE FICHIERS FORTRAN 77 EN FORTRAN 95 par deadhand
Source avec Zip Source .NET (Dotnet) JEU TAQUIN par hwarou
Source avec Zip Source avec une capture Source .NET (Dotnet) MOTUS (JEU DE LETTRES) par Bidou
Source avec Zip Source .NET (Dotnet) CONVERTISSEUR DÉCIMAL/BINAIRE/HEXADÉCIMAL par wererabbit
Source avec Zip Source .NET (Dotnet) CONVERTISSEUR PDF par crack_xp

Commentaires et avis

Commentaire de biloutelinux le 23/12/2008 20:22:44

il manque un break à la fin des switchs, et quelques trucs en plus

Commentaire de phaum1967 le 29/12/2008 17:50:06

Bonjour
etant plus de que débutant, j'ai besoin de ce code dans Visual Web Developer 2008
J'ai donc ajouté tous les éléments à mon projet asp mais comment je l'utilise pour dire à un textbox de faire la conversion en fonction d'un autre textbox?

Merci

Commentaire de nJohn le 05/05/2010 10:54:11

Bonjour, voici une évolution du source proposé.

Nouveautés :
- le code est factorisé
- conversion d'entier en lettres
- conversion de double en lettres avec devise (accordé au singulier pluriel)
- 81 est traduit par "quatre-vingt un" et pas "quatre-vingt et un"
- optimisation des concaténations des chaines de caractères
- gère les valeurs négatives

Cependant ce code ne donne pas la conversion exacte de l'écriture des nombres. Si l'on fait attention aux très nombreuses règles certaines ne sont pas prises en compte (les tirets, accords au pluriel particuliers)

public class NumberToWords
    {
        private static string[] m_Unite = new string[] { "zero ", "un ", "deux ", "trois ", "quatre ", "cinq ", "six ", "sept ", "huit ", "neuf " };
        private static string[] m_FirstDizaine = new string[] { String.Empty, "onze ", "douze ", "treize ", "quatorze ", "quinze ", "seize ", "dix-sept ", "dix-huit ", "dix-neuf " };
        private static string[] m_Dizaine = new string[] { String.Empty, "dix ", "vingt ", "trente ", "quarante ", "cinquante ", "soixante ", "soixante ", "quatre-vingt ", "quatre-vingt " };
        private static string[] m_CentMille = new string[] { "cent ", "cents ", "mille ", "million ", "millions ", "milliard ", "milliards " };

        private static string m_PrefixAnd = "et ";

        private static string[] m_Devise = new string[] { "euro", "euros" };

        private static string[] m_Centime = new string[] { "centime", "centimes" };

        public static string IntegerToFrenchWords(int p_Number)
        {
            if (p_Number == 0)
                return m_Unite[0]; // zéro

            bool isNumberNeg = false;
            if (p_Number < 0)
            {
                isNumberNeg = true;
                p_Number = p_Number * -1;
                // PB si p_Number = -2147483648 => p_Number * -1 = -2147483648,
                // car la valeur max d'un entier est 2147483647 et pas 2147483648
                if (p_Number == Int32.MinValue)
                    throw new ArgumentException("Impossible de convertir en lettres le nombre " + p_Number, "p_Number");
            }
                
            // Déclarations
            int centaine, dizaine, unite, reste, y;
            bool is10or70or90 = false;
            string intInWords = String.Empty;

            reste = (int)p_Number;

            for (int i = 1000000000; i >= 1; i /= 1000)
            {
                y = reste / i;
                if (y != 0)
                {
                    centaine = y / 100;
                    dizaine = (y - centaine * 100) / 10;
                    unite = y - (centaine * 100) - (dizaine * 10);

                    // Centaines
                    if (centaine == 1)
                        intInWords += m_CentMille[0];
                    else if (centaine > 1)
                    {
                        intInWords += m_Unite[centaine];
                        if ((dizaine == 0) && (unite == 0)) intInWords += m_CentMille[1];
                        else intInWords += m_CentMille[1];
                    }

                    // Convertit les dizaines et unités en lettres
                    intInWords += GetUniteAndDizaineWords(dizaine, unite, ref is10or70or90);

                    // Milliers, millions, milliards
                    switch (i)
                    {
                        case 1000000000:
                            if (y > 1) intInWords += m_CentMille[6];
                            else intInWords += m_CentMille[5];
                            break;
                        case 1000000:
                            if (y > 1) intInWords += m_CentMille[4];
                            else intInWords += m_CentMille[3];
                            break;
                        case 1000: // cas particulier si unité = 1 -> pas de préfix "un"
                            intInWords = unite == 1 ? m_CentMille[2] : String.Concat(intInWords, m_CentMille[2]);
                            break;
                    }
                }

                reste -= y * i;
                is10or70or90 = false;
            }

            if (isNumberNeg)
                intInWords = "moins " + intInWords;

            return intInWords;
        }

        public static string CurrencyNumberToFrenchWords(double p_Number)
        {
            if (p_Number == 0)
                return m_Unite[0]; // zéro

            // Déclarations
            int dizaine, unite;
            bool is10or70or90 = false;
            string intInWords = String.Empty;

            // Récupère la partie entière et détermine la devise au singulier/pluriel
            int partEntiere = (int)p_Number;
            string devise = partEntiere > 1 ? m_Devise[1] : m_Devise[0];

            // Récupère la partie entière
            intInWords = IntegerToFrenchWords(partEntiere);

            // Traitement de la virgule
            decimal chiffreDec;
            chiffreDec = (decimal)(p_Number * 100) % 100;
            dizaine = (int)(chiffreDec) / 10;
            unite = (int)chiffreDec - (dizaine * 10);

            // Convertit les dizaines et unités en lettres
            string decInWords = GetUniteAndDizaineWords(dizaine, unite, ref is10or70or90);

            if (decInWords == String.Empty)
                return String.Concat(intInWords, devise);
            else if (dizaine == 0 && unite == 1)
                return String.Format("{0}{1} et {2}{3}", intInWords, devise, decInWords, m_Centime[0]);
            else
                return String.Format("{0}{1} et {2}{3}", intInWords, devise, decInWords, m_Centime[1]);
        }

        private static string GetUniteAndDizaineWords(int p_Dizaine, int p_Unite, ref bool p_Is10or70or90)
        {
            string numberInWords = String.Empty;

            // dizaines
            if (p_Dizaine == 1) // Flag la dizaine particulière
            {
                p_Is10or70or90 = true;
            }
            else if (p_Dizaine > 1)
            {
                // Concatène avec la dizaine appropriée
                numberInWords += m_Dizaine[p_Dizaine];

                if (p_Dizaine == 7 || p_Dizaine == 9) // Flag la dizaine particulière
                    p_Is10or70or90 = true;
            }


            // unités
            if (p_Unite == 0 && p_Is10or70or90)
            {
                numberInWords += m_Dizaine[1]; // dix
            }
            else if (p_Unite == 1)
            {
                if (p_Dizaine == 7) numberInWords = String.Concat(numberInWords, m_PrefixAnd, m_FirstDizaine[p_Unite]);
                else
                    if (p_Is10or70or90) numberInWords += m_FirstDizaine[p_Unite];
                    else if (p_Dizaine == 8) numberInWords = String.Concat(numberInWords, m_Unite[p_Unite]); // cas particulier 81 pas de "et"
                    else if (p_Dizaine > 1) numberInWords = String.Concat(numberInWords, m_PrefixAnd, m_Unite[p_Unite]);
                    else numberInWords += m_Unite[1];
            }
            else if (p_Unite > 1)
            {
                if (p_Is10or70or90) numberInWords += m_FirstDizaine[p_Unite];
                else numberInWords += m_Unite[p_Unite];
            }

            return numberInWords;
        }
}

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

convertir le chiffre en lettre par le langage c [ par princered ] monsieur et madame je dois r&#233;aliser un programme en&nbsp;C qui &#233;crit les chiffres en lettres jusqu'&#224; 99 999 999. convertir de chiffre en lettre [ par agbaheromato ] Bon jour a tous Svp veuillez m'aider à convertir un montant saisie en chiffre dans un textbox en lettre. merci beacoup!!! Complet une lettre avec un chiffre [ par babaOrhumette ] Bonjour, je recherche un moyen de coupler des données. Je m'explique. J'ai une série de lettres : A, B, C et D J'ai une série de chiffres : 1, 2, 3 Equivalent NumericUpDown en Alpha (une lettre) [ par Bowen123 ] Bonjour, Je souhaite savoir s'il y a un équivalent du controle NumericUpDown pour une lettre? Merci :) Limiter nombre de chiffre apres la virgule [ par Pom825 ] je cherche a limiter le nombre de chiffre apres la virgule (mantisse) pour un affiche plus proprebref l'equiavalent de la fonction FormatNumber en VB. ListView et analyse syntaxique automatique [ par Hartwood ] Salut à tousMon problèmes est assez simple mais compliqué en même temps! :-)J'utilise (en C#) une listView qui me sert de liste de completion pour un chiffre superieur a 16 chiffres doit etre toujours = a 16 chiffre [ par metasys ] J'ai un nombre toujours supérieur à 16 chiffres, j'aimerais pourvoir reduire ce nombre à 16 chiffres à chaque fois.J'ai regarder les fonctions TRIM TR convertisseur de codes [ par OlivierAfpaRoubaix ] Bonjour , je cherche un source c#,un add pour visual studio ou delphi pour convertir un code delphi vers c#, et inversement . Merci d'avance.Olivier.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales