begin process at 2012 02 11 10:57:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > NOMBRE EN LETTRES (FRANÇAIS)

NOMBRE EN LETTRES (FRANÇAIS)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Niveau :Débutant Date de création :06/09/2004 Vu :6 767

Auteur : DrJo45

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

 Description

Permet la conversion en français d'un montant avec unité et sous-unité.

Source

  • Option Explicit
  • ' --------------------------------------------------------------
  • ' Pour transformer un nombre en texte (Version Française)
  • ' --------------------------------------------------------------
  • Public Function NumText(ByVal nombre As Currency, _
  • ByVal Unite As String, _
  • ByVal no_chiffres As Integer, _
  • ByVal Sousunite As String) As String
  • ' Converti le nombre en format texte
  • Dim PartieEntiere As Currency, PartieDecimale As Currency
  • Dim TxtEntier As String, TxtDecimal As String
  • Dim Signe As Integer
  • Signe = Sgn(nombre)
  • nombre = Abs(Round(nombre, no_chiffres))
  • PartieEntiere = Int(nombre)
  • TxtEntier = NumTextEntier(PartieEntiere)
  • If no_chiffres > 0 Then
  • PartieDecimale = Round((nombre - PartieEntiere) * 10 ^ no_chiffres, 0)
  • If PartieDecimale > 0 Then
  • TxtDecimal = NumTextEntier(PartieDecimale)
  • Else: TxtDecimal = ""
  • End If
  • End If
  • If Signe = -1 Then TxtEntier = "moins " & TxtEntier
  • NumText = TxtEntier & Unite & IIf(TxtDecimal <> "", " et " & TxtDecimal & Sousunite, "")
  • End Function
  • Private Function NumTextEntier(ByVal Entier As Currency) As String
  • ' converti un nombre entier en format texte
  • Dim no_classe As Integer
  • Dim Classe As Integer
  • If Entier = 0 Then
  • NumTextEntier = "Zéro"
  • Else
  • While Entier > 0
  • Classe = Entier - Fix(Entier / 1000) * 1000
  • NumTextEntier = TxtClasse(Classe, no_classe) & NumTextEntier
  • no_classe = no_classe + 1
  • Entier = Fix(Entier / 1000)
  • Wend
  • End If
  • End Function
  • Private Function TxtClasse(Classe As Integer, no_classe As Integer) As String
  • 'converti un groupe de chiffres (3 maxi) en sa valeur et complète avec sa classe
  • Dim Centaine As Integer, Dizaine As Integer, Unite As Integer, Unite2Chiffres As Integer
  • Dim TxtCentaines As String, TxtDizaines As String, TxtUnites As String
  • Dim TClasses As Variant, TDizaines As Variant, TUnites As Variant
  • TxtClasse = ""
  • TClasses = Array("", "mille", "million", "milliard", "billion")
  • TDizaines = Array("", "", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre-vingt", "quatre-vingt")
  • TUnites = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
  • If Classe = 0 Then Exit Function
  • ' pas de un pour mille
  • If Classe = 1 And no_classe = 1 Then
  • TxtClasse = TClasses(1)
  • Exit Function
  • End If
  • Centaine = Classe \ 100
  • Unite2Chiffres = Classe Mod 100
  • Dizaine = Unite2Chiffres \ 10
  • Unite = Unite2Chiffres Mod 10
  • ' texte centaines
  • If Centaine = 1 Then
  • TxtCentaines = "cent"
  • ElseIf Centaine > 0 Then
  • TxtCentaines = TUnites(Centaine) & " cent" & IIf(Unite2Chiffres > 0, "", "s")
  • End If
  • If TxtCentaines <> "" And Unite2Chiffres > 0 Then TxtCentaines = TxtCentaines & " "
  • ' Texte dizaines
  • TxtDizaines = TDizaines(Dizaine)
  • If Unite = 1 And Dizaine > 1 And Dizaine < 8 Then TxtDizaines = TxtDizaines & " et"
  • If Dizaine = 1 Or Dizaine = 7 Or Dizaine = 9 Then Unite = Unite + 10: Dizaine = 0
  • TxtDizaines = TxtDizaines & IIf(Unite2Chiffres = 80, "s", "")
  • If Unite2Chiffres > 19 And Unite > 0 Then
  • TxtDizaines = TxtDizaines & "-"
  • ElseIf Dizaine > 0 Then
  • TxtDizaines = TxtDizaines & " "
  • End If
  • ' Texte unités
  • TxtUnites = TUnites(Unite) & IIf(Unite > 0, " ", "")
  • ' Texte classe. (1 s sauf pour mille)
  • TxtClasse = TClasses(no_classe) & IIf(no_classe > 1 And Classe > 1, "s", "") & IIf(no_classe > 0, " ", "")
  • ' Résultat
  • TxtClasse = TxtCentaines & TxtDizaines & TxtUnites & TxtClasse
  • End Function
Option Explicit

' --------------------------------------------------------------
' Pour transformer un nombre en texte (Version Française)
' --------------------------------------------------------------
Public Function NumText(ByVal nombre As Currency, _
                        ByVal Unite As String, _
                        ByVal no_chiffres As Integer, _
                        ByVal Sousunite As String) As String
' Converti le nombre en format texte
Dim PartieEntiere As Currency, PartieDecimale As Currency
Dim TxtEntier As String, TxtDecimal As String
Dim Signe As Integer
  Signe = Sgn(nombre)
  nombre = Abs(Round(nombre, no_chiffres))
  PartieEntiere = Int(nombre)
  TxtEntier = NumTextEntier(PartieEntiere)
  If no_chiffres > 0 Then
    PartieDecimale = Round((nombre - PartieEntiere) * 10 ^ no_chiffres, 0)
    If PartieDecimale > 0 Then
      TxtDecimal = NumTextEntier(PartieDecimale)
    Else: TxtDecimal = ""
    End If
  End If
  If Signe = -1 Then TxtEntier = "moins " & TxtEntier
  NumText = TxtEntier & Unite & IIf(TxtDecimal <> "", " et " & TxtDecimal & Sousunite, "")
End Function

Private Function NumTextEntier(ByVal Entier As Currency) As String
' converti un nombre entier en format texte
Dim no_classe As Integer
Dim Classe As Integer
  If Entier = 0 Then
    NumTextEntier = "Zéro"
  Else
    While Entier > 0
      Classe = Entier - Fix(Entier / 1000) * 1000
      NumTextEntier = TxtClasse(Classe, no_classe) & NumTextEntier
      no_classe = no_classe + 1
      Entier = Fix(Entier / 1000)
    Wend
  End If
End Function

Private Function TxtClasse(Classe As Integer, no_classe As Integer) As String
'converti un groupe de chiffres (3 maxi) en sa valeur et complète avec sa classe
Dim Centaine As Integer, Dizaine As Integer, Unite As Integer, Unite2Chiffres As Integer
Dim TxtCentaines As String, TxtDizaines As String, TxtUnites As String
Dim TClasses As Variant, TDizaines As Variant, TUnites As Variant

  TxtClasse = ""
  TClasses = Array("", "mille", "million", "milliard", "billion")
  TDizaines = Array("", "", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre-vingt", "quatre-vingt")
  TUnites = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
  
  If Classe = 0 Then Exit Function
  ' pas de un pour mille
  If Classe = 1 And no_classe = 1 Then
    TxtClasse = TClasses(1)
    Exit Function
  End If
  Centaine = Classe \ 100
  Unite2Chiffres = Classe Mod 100
  Dizaine = Unite2Chiffres \ 10
  Unite = Unite2Chiffres Mod 10
  ' texte centaines
  If Centaine = 1 Then
    TxtCentaines = "cent"
  ElseIf Centaine > 0 Then
    TxtCentaines = TUnites(Centaine) & " cent" & IIf(Unite2Chiffres > 0, "", "s")
  End If
  If TxtCentaines <> "" And Unite2Chiffres > 0 Then TxtCentaines = TxtCentaines & " "
  ' Texte dizaines
  TxtDizaines = TDizaines(Dizaine)
  If Unite = 1 And Dizaine > 1 And Dizaine < 8 Then TxtDizaines = TxtDizaines & " et"
  If Dizaine = 1 Or Dizaine = 7 Or Dizaine = 9 Then Unite = Unite + 10: Dizaine = 0
  TxtDizaines = TxtDizaines & IIf(Unite2Chiffres = 80, "s", "")
  If Unite2Chiffres > 19 And Unite > 0 Then
    TxtDizaines = TxtDizaines & "-"
  ElseIf Dizaine > 0 Then
    TxtDizaines = TxtDizaines & " "
  End If
  ' Texte unités
  TxtUnites = TUnites(Unite) & IIf(Unite > 0, " ", "")
  ' Texte classe. (1 s sauf pour mille)
  TxtClasse = TClasses(no_classe) & IIf(no_classe > 1 And Classe > 1, "s", "") & IIf(no_classe > 0, " ", "")
  
  ' Résultat
  TxtClasse = TxtCentaines & TxtDizaines & TxtUnites & TxtClasse
End Function

 Conclusion

Je ne suis pas l'auteur original de ce code il provient d'un magazine parut il y a longtemps et dont j'ai déjà) oublié le nom. Je n'ai fait que l'améliorer et l'adapter.
Il fait suite aux différents codes de ce type déjà déposés et propose une version un peu propre de ce type de code.


 Sources du même auteur

Source avec Zip EXEMPLE D'AFFICHAGE DANS TOUTES LES LANGUES

 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

Commentaires et avis

Commentaire de ITALIA le 06/09/2004 15:30:07

Surement Bien ...mais rien de Nouveau... on n'aurait pu s'en passer :

http://www.vbfrance.com/code.aspx?ID=83
http://www.vbfrance.com/code.aspx?ID=6325
http://www.vbfrance.com/code.aspx?ID=6489
http://www.vbfrance.com/code.aspx?ID=20777
.......
......
.....
....
...
..
.

Commentaire de vercingetorix le 03/01/2005 19:17:09

rien de bien nouveau... si ce n'est une bien meilleure gestion des cas comme "vingt et un mille" au lieu de "vingt un mille"... merci

 Ajouter un commentaire




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 : 0,530 sec (3)

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