Arrondir le resultat

Bonjour,

J'essaye de trouver une fonction pour arrondir des résultats et en utilisant la fonction round( , ) j'obtiens bien l'arrondi mais que pour l'affichage pas pour les calculs car l'arrondi en reprenant la cellule en question contient tous les chiffres après la virgule.

Exemple

Cells(Affichage_lign, Affichage_column) = Round(Energy_utile, 2)

Résultat affiché dans la cellule: 0,2

mais en se positionnant sur la cellule on a en vrai : 1,79999995231628

Merci pour votre aide.

Bonjour,

sans doute une perte due aux conversion mais passer de 0.2 à 1.79 faut pas abuser non plus.

Tu as dû oublier de noter une puissance de 10

eric

Merci pour le retour. La problématique pour moi n'est pas l’imprécision de l'arrondi (je réglerai cela dans un 2eme temps si besoin est). J'utilise la fonction round(,) pour arrondir le résultat de calculs mais en fait ce n'est que de l'affichage. Quand on rentre dans la cellule le résultat n'est plus arrondi mais comporte une quinzaine de chiffre après la virgule. Je réutilise le résultat dans d'autres calculs et des ces autres calculs la valeur n'est pas arrondie en vrai d'où mon vrai problème.

Sub Calcul_Energie_2()

' Calcul_Energie Macro

'Déclaration variables
Dim num_column As Integer
Dim num_lign As Long
Dim Energy_utile As Single
Dim DOD As Single
Dim Crate As Single
Dim Energie_embarquee As Single
Dim Power As Single
Dim Affichage_column As Integer
Dim Affichage_lign As Integer
Dim compteur As Integer
Dim Tfinal As Single
Dim Tinitial As Single
'Initialisation
num_column = 7
num_lign = 4 'début de la ligne des données
Affichage_column = 8
Affichage_lign = 3
Energie_embarquee = Cells(1, 13)
Tinitial_init = Cells(4, 4)

      Do While num_lign < 86403

            While Cells(num_lign, num_column) = Cells(num_lign - 1, num_column) 'Test si la cellule N et N-1 sont didentiques
                    If (compteur = 0) Then 'Compteur
                    Tinitial = Cells(num_lign, 4) - Tinitial_init 'Stock le T0 de la série d'une puissance
                    Tinitial_init = 0
                    End If
                compteur = compteur + 1
                num_lign = num_lign + 1 'incrémentation du numéro de ligne
            Wend
                Tfinal = Cells(num_lign - 1, 4) 'Stock le Tfin de la série d'une puissance
                Energy_utile = Cells(num_lign - 1, 7) * (Tfinal - Tinitial) 'Calcule de l'énergie de la série d'une puissance
                DOD = Energy_utile / Energie_embarquee 'calcul du DOD par série d'une puissance
                Power = Cells(num_lign - 1, 7)
                Crate = Power / Energie_embarquee 'calcul du Crate par série d'une puissance

                Cells(Affichage_lign, Affichage_column) = Round(Energy_utile, 2) 'affichage de l'énergie
                Cells(Affichage_lign, Affichage_column + 1) = Round(Tfinal - Tinitial, 3) 'Affichage de la durée d'une série de puissance
                Cells(Affichage_lign, Affichage_column + 2) = Round(DOD, 1) 'Affichage
                Cells(Affichage_lign, Affichage_column + 3) = Round(Crate, 1) 'Affichage
                Cells(Affichage_lign, Affichage_column + 4) = Round(Power, 1) 'Affichage

                compteur = 0 'réinitialisation compteur
                num_lign = num_lign + 1 'incrémentation du numéro de ligne
                Affichage_lign = Affichage_lign + 1 'incrémentation de Affichage_lign

     Loop

End Sub

Bonjour,

je ne te parlais pas d'imprécision de l'arrondi mais de perte de précision due aux conversions (décimales/binaires)

Mais si tu ne veux pas mettre de fichier pour moi ça en reste là.

eric

Voilà ci-joint



Le fichier est bien joint? Je ne le vois pas dans mes emails...

Peut-être trop gros.

Le zipper ou le mettre sur cjoint.com et coller ici le lien fourni.

N'oublie pas de fournir toutes les précisions.

Quelles macros et leur emplacement, avec quelles données, où etc

Re-bonjour,

J'ai joint mon fichier comme proposé à ce lien:

La feuille intéressante où sont réalisés les calculs est nommée "Load Cycle Ferry F1"

Les résultats des calculs de la macro sont colorés en bleu et l'on voit que les chiffres après la virgules sont trop longs et toujours là.

La macro utilisée s'appelle "Macro 1".

j'utilise la fonction round(,) pour tronquer les résultats de calculs (et pas uniquement l'affichage).

Mais je n'arrive pas à obtenir les arrondis voulus comme spécifié par le nombre de chiffre après la virgule défini par le 2eme chiffre de la fonction round:

Cells(Affichage_lign, Affichage_column) = Round(Energy_utile, 3) 'affichage de l'énergie

Cells(Affichage_lign, Affichage_column + 1) = Round(Tfinal - Tinitial, 3) 'Affichage de la durée d'une série de puissance

Cells(Affichage_lign, Affichage_column + 2) = Round(DOD, 1) 'Affichage

Cells(Affichage_lign, Affichage_column + 3) = Round(Crate, 1) 'Affichage

Cells(Affichage_lign, Affichage_column + 4) = Round(Power, 1) 'Affichage

Merci par avance pour votre aide.

Sébastien


Est ce que le fichier se télécharge bien ?


Le même fichier mais zippé si le 1er ne marche pas.

Bonjour,

pour de l'aide on met un fichier réduit au minimum.

Pas un fichier de 7.5 Mo avec 85000 lignes, abîmé de surcroît et qui met des plombes à se réparer...

Quand on annonce une macro1() on s'arrange pour qu'elle y soit.

Par contre je trouve 3 macros Calcul_Energie()...

Ca fait beaucoup trop de laissé aller pour moi tout ça et je ne trouve pas ça sérieux. attend quelqu'un d'autre.

Un conseil quand même, revoit déjà des typages de variables. On a l'impression que tu ne t'es même pas renseigné sur leurs possibilités et limites.

De plus, si c'est un problème de perte de précision dues aux conversion ça se règle facilement par un arrondi sur la feuille.

Sinon essaie avec les types Currency ou Decimal, ou au minimum Double.

eric

en passant les variables en double l'arrondi marche bien avec la fonction round(,)

Merci

bonjour

salut eriic

pourquoi du VBA ? Excel dispose de fonctions d'arrondi qui suffisent.

Bonjour,

c'est ce que je lui ai signalé.

Je ne prend pas le risque de rouvrir son fichier infernal mais de mémoire il y a d'autres calculs de réalisés.

eric

C'est Sebby pas Eriic,

Je préfère le VBA car j'ai d'autres calculs-fonctions à réaliser en VBA et donc autant tout automatiser plutôt que des faire de manip à la main. De plus j'ai beaucoup de lignes à traiter.

Cdlt

re

Excel est conçu pour fonctionner d'abord avec des formules, et ensuite avec VBA (et c'est plus complexe)

pourquoi parles-tu de "faire à la main" ? les formules fonctionnent seules

de plus les formules fonctionnent très bien sur de gros fichiers

je ne comprends pas ta remarque

Rechercher des sujets similaires à "arrondir resultat"