begin process at 2012 02 13 07:47:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

conversion nombre réel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

conversion nombre réel

lundi 7 juillet 2008 à 10:59:17 | conversion nombre réel

bessouma06

bonjour à tous
j'ai encore le même probléme j'ai trouvé ce code sur ce mêm forum qui peuttraiter des nombres réels mais le probléme c qu'il traite seulement deux chiffres aprés la virgule.
ce que je cherche uncode qui traite un nombre réel avec trois chiffres aprés la virgule
exp: 235.989
merci d'avance
voilà le code

-********************
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles orthographiques en vigueur
' au maroc . Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumD1, varnumU, varlet, résultat, bytcent As Byte
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes étapes
Static chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
chiffre(1) = " un"
chiffre(2) = " deux"
chiffre(3) = " trois"
chiffre(4) = " quatre"
chiffre(5) = " cinq"
chiffre(6) = " six"
chiffre(7) = " sept"
chiffre(8) = " huit"
chiffre(9) = " neuf"
chiffre(10) = " dix"
chiffre(11) = " onze"
chiffre(12) = " douze"
chiffre(13) = " treize"
chiffre(14) = " quatorze"
chiffre(15) = " quinze"
chiffre(16) = " seize"
chiffre(17) = " dix-sept"
chiffre(18) = " dix-huit"
chiffre(19) = " dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = " dix"
dizaine(2) = " vingt"
dizaine(3) = " trente"
dizaine(4) = " quarante"
dizaine(5) = " cinquante"
dizaine(6) = " soixante"
dizaine(7) = " soixante"
dizaine(8) = " quatre-vingt"
dizaine(9) = " quatre-vingt"
'*** Le traitement des milliards n'est pas pris en compte
If Montant > 999999999.99 Then
   MsgBox "Les milliards ne sont pas traités par ce programme @ @", vbCritical, "Conversion Montant en Lettres"
   Exit Function
End If
'*** Traitement du cas zéro
If Montant >= 1 Then
   résultat = ""
Else
   résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
   GoSub CentaineDizaine
   résultat = varlet + " million"
   If varlet <> "un" Then résultat = résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
   GoSub CentaineDizaine
   If varlet <> " un" Then
      résultat = résultat + " " + varlet
      résultat = résultat & " mille"
   Else
      résultat = " mille"
   End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
   GoSub CentaineDizaine
   résultat = résultat + " " + varlet
End If
résultat = LTrim(résultat)
varlet = Right$(résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
   Case "ille"
      If Montant <> 1000 Then résultat = résultat + "s"
    Case "cent"
        If bytcent <> 1 Then résultat = résultat + "s"
    Case "lion", "ions"
      résultat = résultat + " de"
End Select

FinTraitement:
'*** Indication du terme devise
   résultat = résultat + " Dinar"
   If Montant >= 2 Then résultat = résultat + "s"
'*** Traitement des centimes
   varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne 0,5 afin de compenser
                                                      '*** les erreurs de calcul dues aux arrondis
   If varnum > 0 Then
      GoSub CentaineDizaine
      résultat = résultat + " et " + varlet + " centime"
      If varnum > 1 Then résultat = résultat + "s"
   End If
'*** Conversion 1ère lettre en majuscule
   résultat = UCase(Left(résultat, 1)) + Right(résultat, Len(résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
   MontantEnLettre = résultat
Exit Function
CentaineDizaine:
   varlet = ""
'*** Traitement des centaines
   If varnum >= 100 Then
      varlet = chiffre(Int(varnum / 100))
      varnum = varnum Mod 100
      If varlet = " un" Then
         varlet = " cent "
         bytcent = 1
      Else
         varlet = varlet + " cent "
      End If
   End If
'*** Traitement des dizaines
   If varnum <= 19 Then '*** Cas où la dizaine est <20
      If varnum > 0 Then
         varlet = varlet + chiffre(varnum)
      End If
   Else
      varnumD = Int(varnum / 10) '*** chiffre des dizaines
      varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
      varlet = varlet + dizaine(varnumD)

  If varnumD = 7 Or varnumD = 9 Then
     varnumD1 = varnum - (varnumD - 1) * 10
     varlet = varlet + " " + chiffre(varnumD1)
End If
'*** traitement du séparateur des dizaines et unités
      If varnumU = 1 Then
         varlet = varlet + " et "
      End If
   End If
  
'*** génération des unités
   If varnumU <> 0 Then
   If varnumD = 7 Or varnumD = 9 Then
   varlet = varlet
   Else
    varlet = varlet + chiffre(varnumU)
   End If
   End If
'*** Suppression des espaces à gauche et retour
   varlet = RTrim(varlet)
   Return
End Function


 

lundi 7 juillet 2008 à 11:28:40 | Re : conversion nombre réel

jmfmarques

Membre Club
Bonjour,

travaille sur cette idée simple :
1) séparation de la partie entière (appelons-la E) et de la partie décimale (appelons-la D)
2) conversion en lettres de la partie entière E ===> appelons le résultat RE
3) conversionen lettre de la partie décimale D (qui est un entier également) ===>> appelons ce résultat RD
4) ma_chaine = RE & " et " RD & " millièmes"

Tu peux même, selon la longueur de la partie décimale, modifier millèmes en centièmes, dizaines etc .....
genre :
If len(D) = 2 then ma_fraction = "centièmes"
ma_chaine = RE & " et " RD & " " & ma_fraction

A toi de jouer, hein...


Cette discussion est classée dans : chiffre, résultat, varlet, varnum, if


Répondre à ce message

Sujets en rapport avec ce message

Filtre multicritères pour un sous formulaire [ par patriceoise ] Bonjour, Pour situer un peu l'environnement, je suis en train de rédiger un formulaire de recherche multicritères. Les champs de recherche sont dans [déplacé VB6 -> VB.NET] Probléme tri croissant [ par kijx ] Bonjour , Je debute en programmation visual basic et j'aimerai savoir comment est ce que l'on fait pour trier 10 valeurs en ordre croissant , c'est v Saisie obligatoire de chiffre? [ par js8bleu ] Bonjour, j'ai un champ salaire (txtsal) et j'aimerai contrôler le fait que seule la saisie de chiffre peut être accepter dans ce champ. Voici mon cod [déplacé VB6 -> VBA] condition multi-critères [ par idaho2duncan ] Bonjour, j'ai besoin d'aide. J'aimerai ajouter un élément à ce code source: la colonne 5 se met automatiquement en majuscule, j'aimerai que ce soit au editer plusieur msflexgrid [ par rapidozoo ] bonjour Je fait une aplication pour editer, copier et créer des enrégistrements d'une BD MYSQL. Je veux avoir 2 msflexgrid : GRID1 pour modifier les Test de numéricité décimale sur textbox [ par lilj ] Salut tout le monde !! Je suis nouveau..; Je suis entrain de creer une app en VB 2005 Express. Et je dois utiliser une textbox. Mais je voudrais un co Tocuhe Tab dans TextBox [ par lokomass ] Bonjour, J'aimerais lorsque je presse la touche tab dans un fichier texte elle soit envoyée sur le port com. J'ai fait ce code ; [code=vb]Private Su recuperer les valeurs de plusieurs checkbox avec une boucle [ par biboulou ] salut pour certain c'est l'inverse d'un autre message (j'ai fait des essais mais rien de concluent) je travail sous visual studio 2008 j'ai 256 chek Vitesse traitement mise jour table [ par serialv2 ] Salut, Je vais essayer d'etre le plus clair possible, Voila j'ai une base de donnee ARTICLE a mettre a jour regulierement. Pour ce faire je dispose d'


Nos sponsors


Sondage...

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

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