Format pour un nombre

Format pour un nombre - VB/VBA/VBS - Programmation

Marsh Posté le 05-12-2003 à 12:48:30    

je voudrais formater un nombre pour l'afficher :
- pour un nombre entier, afficher le nombre tel quel (ex : 4)
- pour un nombre décimal, afficher avec seulement 2 décimale (ex : 5.24, même si le nompbre est en réalité 5.243897645284)
 
Selon les format que je mets, soit j'ai 4,00 et 5,24, soit 4 et 5.243897645284.
 


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 05-12-2003 à 12:48:30   

Reply

Marsh Posté le 05-12-2003 à 15:30:01    

avec un format classique, je suis pas sûr que tu pourras y arriver. Par contre, la fonction Round devrait te donner satisfaction, tu lui passes ton nombre et le nombre de décimales que tu désires.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 05-12-2003 à 17:19:51    

drasche a écrit :

avec un format classique, je suis pas sûr que tu pourras y arriver. Par contre, la fonction Round devrait te donner satisfaction, tu lui passes ton nombre et le nombre de décimales que tu désires.

En fait c'est pas pour un programme, c'est pour un formulaire sous access, et le format est une propriété d'une zone de texte, donc pour les fonctions :/
Enfin tant pis, faudra faire avec 5,00 si il n'y a pas d'autre moyen.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 05-12-2003 à 19:10:21    

ben a priori, rien ne t'interdit de remplacer le champ DB par une fonction d'arrondi avec le champ DB en paramètre (et ne rien mettre pour le format).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 05-12-2003 à 22:38:29    

Dans le principe, y a moyen de tester, une fois le format appliqué, si y a ",00" et dans ce cas de ne prendre que le nombre entier.
Ou faire calcul de 100 fois la valeur, la mettre dans un entier (ou long) et voir si divisée par 100 elle redonne l'original. Si oui, c'est un "x,00" et on peut utiliser un format "entier".

Reply

Marsh Posté le 06-12-2003 à 05:09:21    

Code :
  1. Option Explicit
  2. Private Function FormatDecimal(ByVal m_value As String, ByVal m_nbDecimal) As String
  3. Dim m_counter As Long
  4. Dim m_virgulePos As Long
  5. Dim m_tmp As String
  6.     If m_nbDecimal > Len(m_value) Then
  7.         FormatDecimal = m_value
  8.         Exit Function
  9.     ElseIf m_nbDecimal = 0 Then
  10.         m_virgulePos = InStr(m_value, "." )
  11.         m_tmp = Mid$(m_value, 1, m_virgulePos - 1)
  12.         FormatDecimal = m_tmp
  13.         Exit Function
  14.     Else
  15.     m_virgulePos = InStr(m_value, "." )
  16.     m_tmp = Mid$(m_value, 1, m_virgulePos)
  17.     m_virgulePos = m_virgulePos + 1
  18.     ' base zero
  19.     m_nbDecimal = m_nbDecimal - 1
  20.     For m_counter = m_virgulePos To (m_virgulePos + m_nbDecimal)
  21.         m_tmp = m_tmp & Mid$(m_value, m_counter, 1)
  22.     Next m_counter
  23.    
  24.     End If
  25.     FormatDecimal = m_tmp
  26.  
  27. End Function
  28. Private Sub Form_Load()
  29.     MsgBox FormatDecimal("5.243897645284", 2)
  30. End Sub


 
Code fait à l'arrache ... à améliorer.

Reply

Marsh Posté le 06-12-2003 à 17:54:41    

Mouais, c'es une voie à explorer, je vais tester ça. Merci à vous trois.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed