begin process at 2012 02 12 19:12:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > CONVERTISSEUR SOMME EN LETTRES

CONVERTISSEUR SOMME EN LETTRES


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :somme, lettres, convertisseur Niveau :Débutant Date de création :29/06/2006 Vu :9 767

Auteur : adeline63

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

 Description

Ce script convertit un nombre passé en paramètre en Euros et en Cents.

Source

  • <?
  • function convertir($Montant)
  • {
  • $grade = array(0 => "zero ",1=>" milliards ",2=>" millions ",3=>" mille ");
  • $Mon = array(0=>" Euro",1=>" Euros",2=>" Cent",3=>" Cents");
  • // Mise au format pour les chéques et le SWI
  • $Montant = number_format($Montant,2,".","");
  • if ($Montant == 0)
  • {
  • $result = $grade[0].$Mon[0];
  • }else
  • {
  • $result = "";
  • // Calcule des Unités
  • $montant = intval($Montant);
  • // Calcul des centimes
  • $centime = round(($Montant * 100) - ($montant * 100),0);
  • // Traitement pour les Milliards
  • $nombre = $montant / 1000000000;
  • $nombre = intval($nombre);
  • if ($nombre > 0)
  • {
  • if ($nombre > 1)
  • {
  • $result = $result.cenvtir($nombre).$grade[1];
  • }else
  • {
  • $result = $result." Un ".$grade[1];
  • $result = substr($result,0,13)." ";
  • }
  • $montant = $montant - ($nombre * 1000000000);
  • }
  • // Traitement pour les Millions
  • $nombre = $montant / 1000000;
  • $nombre = intval($nombre);
  • if ($nombre > 0)
  • {
  • if ($nombre > 1)
  • {
  • $result = $result.cenvtir($nombre).$grade[2];
  • }else
  • {
  • $result = $result." Un ".$grade[2];
  • $result = substr($result,0,12)." ";
  • }
  • $montant = $montant - ($nombre * 1000000);
  • }
  • // Traitement pour les Milliers
  • $nombre = $montant / 1000;
  • $nombre = intval($nombre);
  • if ($nombre > 0)
  • {
  • if ($nombre > 1)
  • {
  • $result = $result.cenvtir($nombre).$grade[3];
  • }else
  • {
  • $result = $result.$grade[3];
  • }
  • $montant = $montant - ($nombre * 1000);
  • }
  • // Traitement pour les Centaines & centimes
  • $nombre = $montant;
  • if ($nombre>0)
  • {
  • $result = $result.cenvtir($nombre);
  • }
  • // Traitement si le montant = 1
  • if ((substr($result,0,7) == " et un " and strlen($result) == 7))
  • {
  • $result = substr($result,3,3);
  • $result = $result.$Mon[0];
  • if (intval($centime) != 0)
  • {
  • $differ = cenvtir(intval($centime));
  • if (substr($differ,0,7) == " et un ")
  • {
  • if ($result == "")
  • {
  • $differ = substr($differ,3);
  • }
  • $result = $result." ".$differ.$Mon[2];
  • }else
  • {
  • $result = $result." et ".$differ.$Mon[3];
  • }
  • }
  • // Traitement si le montant > 1 ou = 0
  • }else
  • {
  • if ($result != "")
  • {
  • $result = $result.$Mon[1];
  • }
  • if (intval($centime) != 0)
  • {
  • $differ = cenvtir(intval($centime));
  • if (substr($differ,0,7) == " et un ")
  • {
  • if ($result == "")
  • {
  • $differ = substr($differ,3);
  • }
  • $result = $result." ".$differ.$Mon[2];
  • }else
  • {
  • if ($result != "")
  • {
  • $result = $result." et ".$differ.$Mon[3];
  • }else
  • {
  • $result = $differ.$Mon[3];
  • }
  • }
  • }
  • }
  • }
  • return $result;
  • }
  • // fonction de convertion d'un chiffre à 3 digits en lettre
  • function cenvtir($Valeur)
  • {
  • $code = "";
  • //texte en clair
  • $SUnit = array(1=>"et un ", 2=>"deux ", 3=>"trois ", 4=>"quatre ", 5=>"cinq ", 6=>"six ", 7=>"sept ", 8=>"huit ", 9=>"neuf ", 10=>"dix ", 11=>"onze ", 12=>"douze ", 13=>"treize ", 14=>"quatorze ", 15=>"quinze ", 16=>"seize ", 17=>"dix-sept ", 18=>"dix-huit ", 19=>"dix_neuf ");
  • $sDiz = array(20=> "vingt ", 30=> "trente ", 40=>"quarante ", 50=>"cinquante ", 60=>"soixante ", 70=>"soixante dix ", 80=>"quatre vingt ", 90=>"quatre vingt dix ");
  • if ($Valeur>99)
  • {
  • $N1= intval($Valeur/100);
  • if ($N1>1)
  • {
  • $code = $code.$SUnit[$N1];
  • }
  • $Valeur = $Valeur - ($N1*100);
  • if ($code != "")
  • {
  • if ($Valeur == 0)
  • {
  • $code = $code." cents ";
  • }else
  • {
  • $code = $code." cent ";
  • }
  • }else
  • {
  • $code = " cent ";
  • }
  • }
  • if ($Valeur != 0)
  • {
  • if ($Valeur > 19)
  • {
  • $N1 = intval($Valeur/10)*10;
  • $code = $code.$sDiz[$N1];
  • if (($Valeur>=70) and($Valeur<80)or($Valeur>=90))
  • {
  • $Valeur = $Valeur + 10;
  • }
  • $Valeur = $Valeur - $N1;
  • }
  • if ($Valeur > 0)
  • {
  • $code = $code." ".$SUnit[$Valeur];
  • }
  • }
  • return $code;
  • }
  • echo convertir(1000000.01);
  • ?>
<?
function convertir($Montant)
{ 
	$grade = array(0 => "zero ",1=>" milliards ",2=>" millions ",3=>" mille "); 
    $Mon = array(0=>" Euro",1=>" Euros",2=>" Cent",3=>" Cents"); 
  
    // Mise au format pour les chéques et le SWI 
    $Montant = number_format($Montant,2,".",""); 

    if ($Montant == 0)
	{ 
        $result = $grade[0].$Mon[0]; 
    }else
	{ 
        $result = ""; 

        // Calcule des Unités 
        $montant = intval($Montant); 
  
        // Calcul des centimes 
        $centime = round(($Montant * 100) - ($montant * 100),0); 
  
        // Traitement pour les Milliards 
        $nombre = $montant / 1000000000; 
        $nombre = intval($nombre); 
        if ($nombre > 0)
		{ 
            if ($nombre > 1)
			{ 
                $result = $result.cenvtir($nombre).$grade[1]; 
            }else
			{ 
                $result = $result." Un ".$grade[1]; 
                $result = substr($result,0,13)." "; 
            } 
            $montant = $montant - ($nombre * 1000000000); 
        } 
  
        // Traitement pour les Millions 
        $nombre = $montant / 1000000; 
        $nombre = intval($nombre); 
        if ($nombre > 0)
		{ 
            if ($nombre > 1)
			{ 
                $result = $result.cenvtir($nombre).$grade[2]; 
            }else
			{ 
                $result = $result." Un ".$grade[2]; 
                $result = substr($result,0,12)." "; 
            } 
            $montant = $montant - ($nombre * 1000000); 
        } 
  
        // Traitement pour les Milliers 
        $nombre = $montant / 1000; 
        $nombre = intval($nombre); 
        if ($nombre > 0)
		{ 
            if ($nombre > 1)
			{ 
                $result = $result.cenvtir($nombre).$grade[3]; 
            }else
			{ 
                $result = $result.$grade[3]; 
            } 
            $montant = $montant - ($nombre * 1000); 
        } 
  
        // Traitement pour les Centaines & centimes 
        $nombre = $montant; 
        if ($nombre>0)
		{ 
            $result = $result.cenvtir($nombre); 
        } 
        // Traitement si le montant = 1 
        if ((substr($result,0,7) == " et un " and strlen($result) == 7))
		{ 
            $result = substr($result,3,3); 
            $result = $result.$Mon[0]; 
            if (intval($centime) != 0)
			{ 
                $differ = cenvtir(intval($centime)); 
                if (substr($differ,0,7) == " et un ")
				{ 
                    if ($result == "")
					{ 
                            $differ = substr($differ,3); 
                    } 
                    $result = $result." ".$differ.$Mon[2]; 
                }else
				{ 
                        $result = $result." et ".$differ.$Mon[3]; 
                } 
            } 
        // Traitement si le montant > 1 ou = 0 
        }else
		{ 
            if ($result != "")
			{ 
                $result = $result.$Mon[1]; 
            } 
            if (intval($centime) != 0)
			{ 
                $differ = cenvtir(intval($centime)); 
                if (substr($differ,0,7) == " et un ")
				{ 
                    if ($result == "")
					{ 
                    	$differ = substr($differ,3); 
                    } 
                    $result = $result." ".$differ.$Mon[2]; 
                }else
				{ 
                    if ($result != "")
					{ 
                    	$result = $result." et ".$differ.$Mon[3]; 
                    }else
					{ 
                        $result = $differ.$Mon[3]; 
                    } 
                } 
            } 
        } 
    } 
    return $result; 
} 
  
// fonction de convertion d'un chiffre à 3 digits en lettre 
function cenvtir($Valeur)
{ 
  
    $code = ""; 
    //texte en clair 
	$SUnit = array(1=>"et un ", 2=>"deux ", 3=>"trois ", 4=>"quatre ", 5=>"cinq ", 6=>"six ", 7=>"sept ", 8=>"huit ", 9=>"neuf ", 10=>"dix ", 11=>"onze ", 12=>"douze ", 13=>"treize ", 14=>"quatorze ", 15=>"quinze ", 16=>"seize ", 17=>"dix-sept ", 18=>"dix-huit ", 19=>"dix_neuf "); 
	$sDiz = array(20=> "vingt ", 30=> "trente ", 40=>"quarante ", 50=>"cinquante ", 60=>"soixante ", 70=>"soixante dix ", 80=>"quatre vingt ", 90=>"quatre vingt dix ");
  
    if ($Valeur>99)
	{ 
		$N1= intval($Valeur/100); 
		if ($N1>1)
		{ 
        	$code = $code.$SUnit[$N1]; 
		} 
		$Valeur = $Valeur - ($N1*100); 
        if ($code != "")
		{ 
			if ($Valeur == 0)
			{
	    		$code = $code." cents "; 
			}else
			{
	            $code = $code." cent "; 
			}
        }else
		{ 
            $code = " cent "; 
        } 
    } 
    if ($Valeur != 0)
	{ 
        if ($Valeur > 19)
		{ 
            $N1 = intval($Valeur/10)*10; 
            $code = $code.$sDiz[$N1]; 
            if (($Valeur>=70) and($Valeur<80)or($Valeur>=90))
			{ 
                $Valeur = $Valeur + 10; 
            } 
            $Valeur = $Valeur - $N1; 
        } 
        if ($Valeur > 0)
		{ 
            $code = $code." ".$SUnit[$Valeur]; 
        } 
    } 
    return $code; 
} 
echo convertir(1000000.01);
?>

 Conclusion

Merci à gillouBx pour la structure du programme (j'ai juste corrigé quelques erreurs)
ATTENTION : On ne peut pas aller au-dessus de la valeur maximum acceptée pour les entiers par la plaetformes (2 milliards et des brouettes).


 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip CHIFFRES EN LETTRES par zied9b
Source avec Zip DÉBUTANT : FONCTION POUR TRANSFORMER UN TEMPS EN SECONDES EN... par MonkeyIsBack
Source avec Zip IP CALCULATOR par X_Cli
Source avec Zip CONVERTISSEUR DE BASE DÉCIMALE, BINAIRE, HEXADÉCIMAL, ... par nicof3

Commentaires et avis

Commentaire de malalam le 07/07/2006 07:49:46 administrateur CS

Hello,

pas de commentaire? Tien...
Je testerai et materai le code plus en détail avant de me prononcer, mais dores et déjà, je trouve l'idée très sympa.

Commentaire de kiki2sirom le 19/07/2006 12:11:59

j'ai testé vite fait rien que pour voir qu'au niveau de l'ortographe et de la sémantique, y a quelques problèmes qui persistent :
exemple => essayez 180 par exemple et vous aurez cent quatre vingt Euros, alors que ça devrait être cent quatre vingts Euros
        => essayez ....,73 et vous aurez "soixante dix treize"...

voilou
kiki

Commentaire de faudel le 13/03/2007 20:45:43

merci pour le code mais peut tu metre oci le code de la page du formulaire, ou quelqu'un d'autre pourrer me l'envoyé sa sré simpa merci

Commentaire de dark_naruto25 le 29/12/2008 23:16:06

Le code est intéressant. Bien que les noms de variables de soient pas si explicite que ça.
Concernant la remarque de kiki2siron, je te présente une petite solution pour arranger le problème du 73 :
Remplace le 'if' de la ligne 162 par celui-ci :
  if ($Valeur > 19) {
    $N1 = intval($Valeur/10)*10;
    if ( (($Valeur>70) and($Valeur<80)or($Valeur>90)) && $Valeur-$N1!=0 ) {
      $code = $code.$sDiz[$N1-10];
      if ( $Valeur>70 && $Valeur<80 && $Valeur-$N1==1 )
        $code = $code." et ";
    }else
      $code = $code.$sDiz[$N1];
    if (($Valeur>70) and($Valeur<80)or($Valeur>90))
      $Valeur = $Valeur + 10;
    $Valeur = $Valeur - $N1;
  }
J'ai testé avec 70,71,72,90,91,95.

Commentaire de sniperdc le 12/06/2009 21:05:42 9/10

Bravo l'artiste !

Tu a codé ce script en 2006 avec le niveau débutant.
Je suppose que depuis tu ne l'est plus ;)

Tu devrais implémenter la solution de "dark_naruto25" elle fonctionne correctement.
Merci pour le script, l'artiste ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

extrairees lettres ou numeros d\\'une chaine [ par apz ] sltm, j'ai la chaine de caractere suivante : $str="m13_19" je voulais recuperer seulement les lettres de cette chaine en utilisant SETTYPE : $lett=set extrairees lettres ou numeros d'une chaine [ par apz ] sltm, j'ai la chaine de caractere suivante : $str="m13_19" je voulais recuperer seulement les lettres de cette chaine en utilisant SETTYPE : $lett=set Probleme avec une requête [ par iomega ] Bonjour à tous, je voudrais savoir comment afficherce résultat.voici ma requête resultat qui contient la somme totale de prime d'assurance et je voudr Redirection du champ MX dans les DNS [ par uuencode ] J'ai un nom de domaine mondomaine.fr, un site internet et 10 boites aux lettres chez AAA . Or mon FAI (BBB) me propose 500 boites aux lettres. Je voul Somme, valeur unique depuis requête [ par ltab ] Bonjour,Je cherche en vain depuis des lustres à faire l'addition de champs provenant d'une requête$sql = "select appartement FROM chambres WHERE id = Somme de deux requetes SQL [ par ephores ] Bonjour à tous ;J'ai deux tables nommé table1 et table2,Chacune ont une rubrique " montant"j'ai crée deux requete chacune donnant le résultat de la s Somme de deux tables [ par rampa99 ] Bonjour. J'ai deux tables nommées revues et livres. elles contiennent les champs suivant livres_id et livres_titre pour livres, et revues_id revues_ti module d'archivage [ par inssetman ] Bonjour ! :)voilà j'aimerais savoir si vous avez une piste, ou même mieux si qq avait déjà fait qq chose de similaire, sil i pouvait m'envoyer ses sou somme dans un tableau [ par matos_deluxe ] Chalut, voila le probleme; j'ai une table "conso", un champ "date_conso_mois" et des champs de consommable ( CD/DVD etc) ; à chaque fois que je consom Sum [ par ksinteractive ] Bonjour,je cherche a faire la SUM d'une colonne mais il y a des chiffres positifs et negatifs et je veut faire la sum uniquement des chiffres positif.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,154 sec (4)

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