Arrondir le resultat

Y compris Power BI, Power Query et toute autre question en lien avec Excel
s
sebby
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 25 août 2017
Version d'Excel : 2010

Message par sebby » 15 septembre 2017, 19:20

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.
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'417
Appréciations reçues : 405
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 15 septembre 2017, 19:56

Bonjour,

:joindre:
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
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
s
sebby
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 25 août 2017
Version d'Excel : 2010

Message par sebby » 16 septembre 2017, 11:59

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
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'417
Appréciations reçues : 405
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 16 septembre 2017, 14:22

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
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
s
sebby
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 25 août 2017
Version d'Excel : 2010

Message par sebby » 16 septembre 2017, 20:36

Voilà ci-joint



Le fichier est bien joint? Je ne le vois pas dans mes emails...
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'417
Appréciations reçues : 405
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 16 septembre 2017, 22:29

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
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
s
sebby
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 25 août 2017
Version d'Excel : 2010

Message par sebby » 19 septembre 2017, 17:21

Re-bonjour,

J'ai joint mon fichier comme proposé à ce lien:
http://www.cjoint.com/c/GItppvrGFMc

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.

http://www.cjoint.com/c/GItpHY28Szc
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'417
Appréciations reçues : 405
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 20 septembre 2017, 00:34

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 essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
s
sebby
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 25 août 2017
Version d'Excel : 2010

Message par sebby » 21 septembre 2017, 11:13

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

Merci
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'603
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 21 septembre 2017, 11:48

bonjour

salut eriic

pourquoi du VBA ? Excel dispose de fonctions d'arrondi qui suffisent.
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • arrondir
    par JST01 » 14 mai 2016, 18:13 » dans Excel - VBA
    4 Réponses
    224 Vues
    Dernier message par JST01
    24 novembre 2016, 14:14
  • arrondir
    par ilien » 6 avril 2018, 13:16 » dans Excel - VBA
    2 Réponses
    126 Vues
    Dernier message par ilien
    6 avril 2018, 13:43
  • Arrondir
    par mrtgrdn » 20 juin 2016, 13:55 » dans Excel - VBA
    6 Réponses
    189 Vues
    Dernier message par Jean-Eric
    21 juin 2016, 11:17
  • Arrondir à chaque 50
    par ShadowBob » 10 novembre 2014, 17:36 » dans Excel - VBA
    5 Réponses
    2976 Vues
    Dernier message par mbbp
    11 novembre 2014, 11:17
  • Arrondir vba
    par abdernino » 26 novembre 2019, 21:47 » dans Excel - VBA
    2 Réponses
    48 Vues
    Dernier message par abdernino
    26 novembre 2019, 22:09
  • Arrondir au dixième
    par Stevenn » 1 juin 2016, 17:45 » dans Excel - VBA
    4 Réponses
    478 Vues
    Dernier message par Stevenn
    1 juin 2016, 18:06