Arrondi et cellule excel

cs_guillaume89 Messages postés 5 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 8 août 2011 - 15 juil. 2008 à 20:23
cs_guillaume89 Messages postés 5 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 8 août 2011 - 19 juil. 2008 à 11:45
Bonjour,


J'ai un probleme avec les arrondis à 2 chiffres dans excel et vba. J'ai essayé plusieur methode sans succes.
Le nombre inscrit dans la cellule est bien arrondi. Mais la cellule garde en memoire les chiffre apres la virgule.


Exemple:
valeur ht en cellule(2,2)= 55.22
valeur tva en cellule(2,3)= LC(-1)*19.6/100 donne 10.82312
valeur ttc en cellule(4,4)=LC(-2)+LC(-1) donne 66.04312


le code
    a = 3
    For i = 2 To 4
        Cells(a, i) = FormatNumber(Cells(2, i), 2)
    Next i
    'TTC-HT-TVA devait donner 0
    Cells(a, 5) = Cells(a, 4) - Cells(a, 2) - Cells(a, 3)


Les cellules de destinations sont bien arrondis, 55.22 ; 10.82 ; 66.04
mais le TTC - TVA - HT donne 7,10543E-15 au lieu de 0. Les valeurs des cellule ne sont donc pas arrondis.


J'ai le même résultat avec
-Cells(a, i) = CLng(Cells(2, i) * 100) / 100
-Cells(a, i) = Fix(Cells(2, i) * 100) / 100
-Cells(a, i) = Round(Cells(2, i) * 100) / 100
-cells(a, i) = Round(cells(2,i),2)


Auriez-vous une solution?
Merci

3 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
15 juil. 2008 à 23:39
Salut,

vraiment pas facile a comprendre ton explication car tu melanges format de cellules et fonction d'arrondi.

le format de cellule n'arrondi rien d'autre que l'affichage de la valeur mais pas la valeur elle meme.
La fonction round en vba quand a elle a besoin que tu lui specifi le nombre de digit c'est a dire un nombre de chiffre apres la virgule.

par exemple :

MsgBox Round(Application.WorksheetFunction.Pi(), 2) 'renvoi le nombre PI a 2 chiffres apres la virgule

MsgBox Round(Application.WorksheetFunction.Pi(), 0) 'renvoi le nombre PI sans chiffre apres la virgule

A+
0
cs_guillaume89 Messages postés 5 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 8 août 2011
16 juil. 2008 à 12:38
Merci pour ta réponce Bigfish,
Mais il y a un probléme avec la fonction round. Essai ce code:

    'Avec 55.22 dans la cellule (10,2)
    Cells(10, 2) = 55.22
    Cells(10, 3) = Round(Cells(10, 2) * 19.6 / 100, 2)  'donne 10.82
    Cells(10, 4) = Cells(10, 2) + Cells(10, 3) 'donne 66.04
    Cells(10, 5) = Cells(10, 4) - Cells(10, 2) - Cells(10, 3) '66.04-55.22-10.82 ne donne pas 0!!

Etonnant non?
Comment faire?
0
cs_guillaume89 Messages postés 5 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 8 août 2011
19 juil. 2008 à 11:45
Personne n'a rencontré le même problème que moi ?
0
Rejoignez-nous