IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Différence entre les fonctions Round() Excel et VBA ? [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut Différence entre les fonctions Round() Excel et VBA ?
    Est-ce que quelqu'un peut m'expliquer pourquoi la fonction round() dans une feuille de calcul est bien régie par la règle de l'arrondi mathématique alors que le round() en vba ne l'est pas?

    je m'attendais a ce que les deux fonctionnent exactement de la meme facon mais ca n'est pas le cas et je ne comprend pas du tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, 1) = WorksheetFunction.Round(0.5, 0)
    Donne 1, ce qui me semble le comportement normal et attendu (c'est a dire l'arrondi mathématique, si la décimale est <5 on arrondi a l'inférieur, si c'est >=5 on arrondi au supérieur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, 2) = Round(0.5, 0)
    donne 0

    pire encore, si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Cells(1, 1) = WorksheetFunction.Round(0.5, 0)
    Cells(1, 2) = Round(0.5, 0)
    Cells(2, 1) = WorksheetFunction.Round(1.5, 0)
    Cells(2, 2) = Round(1.5, 0)
    Cells(3, 1) = WorksheetFunction.Round(2.5, 0)
    Cells(3, 2) = Round(2.5, 0)
    Cells(4, 1) = WorksheetFunction.Round(3.5, 0)
    Cells(4, 2) = Round(3.5, 0)
    on constate que 1,5 et 3,5 sont arrondi "correctement" a 2 et a 4


    est-ce que quelqu'un a la moindre explication pour ce comportement farfellu?

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,voir :

    Microsoft Visual Basic pour applications version 6.0 dans Microsoft Office 2000 inclut une fonction nouvelle nommée Round. Cet article explique comment elle arrondit les valeurs et les différences entre elle et la fonction de feuille de calcul Microsoft Excel nommé Round.
    http://support.microsoft.com/?scid=k...25330&x=19&y=9

    ainsi que :

    Lorsque vous utilisez la fonction Round() dans Visual Basic 6.0, un résultat différent peut être renvoyée que lorsque l'utilisation dans une formule de cellule d'une feuille de calcul Excel.
    http://support.microsoft.com/kb/194983/en-us

    ou l'on parle d'arrondi bancaire et arithmétique

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    ok, merci beaucoup

    c'est déjà malin d'utiliser le même nom et la même syntaxe pour des fonctions qui font des trucs différents
    et c'est d'autant plus tordu que comme elles font la même chose dans 95% des cas, c'est pas facile a débugger

    en tout cas merci beaucoup, en plus d'avoir une solution, j'ai au moins compris d'où venait le probleme

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/09/2014, 12h47
  2. Quelle est la différence entre les fonctions Hxxxx et SQLxxxx?
    Par THOMAS Patrice dans le forum WinDev
    Réponses: 2
    Dernier message: 30/07/2010, 11h40
  3. Réponses: 3
    Dernier message: 21/02/2010, 01h24
  4. Réponses: 67
    Dernier message: 16/12/2007, 13h41
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo