Probleme d'arrondi

Probleme d'arrondi - VB/VBA/VBS - Programmation

Marsh Posté le 24-05-2007 à 15:23:32    

Bonjour,
 
Je viens de faire un programme qui calcule une moyenne, (Je somme une colonne d'excel, puis je divise par le nombre de ligne).
 
Pourtant la fonction me retourne un nombre entier arrondi.
Je voudrais avoir deux chiffres apres la virgule, comment je peux faire ?
 
EDIT, je code en VB.net


Message édité par leo gourven le 24-05-2007 à 15:24:46
Reply

Marsh Posté le 24-05-2007 à 15:23:32   

Reply

Marsh Posté le 24-05-2007 à 15:28:52    

Bon j'ai trouvé, mais je me retrouve avec pleins de chiffres apres la virgule, j'aimerais en avoir que deux maintenant...

Reply

Marsh Posté le 24-05-2007 à 15:37:27    

regarde dans l'aide vba du coté de "format"

Reply

Marsh Posté le 24-05-2007 à 15:39:03    

Oep, merci j'ai trouvé. :)

Reply

Marsh Posté le 24-12-2009 à 11:02:22    

Bonjour, voila moi j'ai un autre probléme j'ai un fichier excel avec 1124 ligne et j'ai une colonne qui à le nombre d'effectif pour chaque établissement sous la forme 1.00 soit 1 salarié ou 1 personne.

 

J'ai seulement qq notions en vb, j'ai commencé un bout de code pour avoir la collonne " n " de ma feuille excel arrondi sans décimale

 

1.00 => 1 le soucis c'est que la conversion fonctionne cependant après éxécution j'ai une colonne " n " avec 0 sur les 1124 lignes, il écrase les autres donnés par etablissement ex : 2 salarié, 5 salariés etc... ( 2.00 => 0   5.00 => 0 )

 
Code :
  1. Sub Arrondi()
  2. Dim i As Long
  3. Dim n As Long
  4. i = 0
  5. For i = 2 To 1124 ( je commence a partir de la ligne 2 )
  6.      Cells(i, "n" ).Value = Format(Cells(i, "n" ).Value, "#0" )
  7.     Next i
  8. MsgBox ("Conversion de l'effectif arrondi à l'entier OK" )
  9. End Sub
 

D'où peut provenir l'erreur sachant que la 1ére ligne est l'en-tête ( Code, libellé, raison social etc...)

 

Initialisation de i ? Format ?

 

Je pense qu'il ne fait pas la différence entre chaque cellule et met des 0 de partout par rapport à "#0" mais si a chaque fois je passe a la suivante ca devrait marcher non ? ce qui est bizarre c'est que j'essaye avec un fichier excel plus petit avec x valeur sous la forme 1.17 et il compare chaque ligne et me fait les changement correctement ligne par ligne est ce du au format de cellule sous excel ?

 

Je vous remercie d'avance de vos réponses car je bloque un peu depuis ce matin autant bien la solution est toute simple ! Y'a t il un autre bout de code ou une autre fonction qui permet de faire cela j'ai essayer avec la fonction round mais ce n'est pas très concluant  :heink:

 

Merci d'avance !!!


Message édité par shurik84 le 24-12-2009 à 14:56:47
Reply

Marsh Posté le 24-12-2009 à 14:20:21    

Bon après quelques temps de réflexion je viens de faire un code qui tourne seulement c'est un peu répetitif sachant que si j'ai des salariés au dessus de 15 personne mettre 15 fois la même ligne peut s'averer long ! Trés long !!!

 
Code :
  1. Sub Arrondi()
  2. Dim i As Long
  3. Dim n As Long
  4. i = 0
  5. For i = 2 To 1124
  6. If Cells(i, "n" ).Value = "0.00" Then
  7.    Cells(i, "n" ).Value = Format(Cells(i, "n" ).Value, "0#" )
  8.           Else
  9.             If Cells(i, "n" ).Value = "1.00" Then
  10.             Cells(i, "n" ).Value = Format(Cells(i, "n" ).Value, "1#" )
  11.                Else
  12.                  If Cells(i, "n" ).Value = "2.00" Then
  13.                  Cells(i, "n" ).Value = Format(Cells(i, "n" ).Value, "2#" )
  14.                Else
  15.                  If Cells(i, "n" ).Value = "3.00" Then
  16.                  Cells(i, "n" ).Value = Format(Cells(i, "n" ).Value, "3#" )
  17.                   End If
  18.              End If
  19.       End If
  20. End If
  21.    
  22.     Next i
  23. MsgBox ("Conversion de l'effectif arrondi à l'entier OK" )
  24. End Sub
 

Qui a une petite solution pour simplifier cela sachant que j'ai essayé de créer une nouvelle variable avec 0.00 en init et puis une incrémentation de 1 a chaque fois mais je ne doit pas avoir la bonne syntaxe ou surement une mauvaise au niveau de la déclaration de ma variable!!!!!

 

Merci de votre aide !!!


Message édité par shurik84 le 24-12-2009 à 15:06:12
Reply

Sujets relatifs:

Leave a Replay

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