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 :

Fonction arrondi [XL-97]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut Fonction arrondi
    Bonjour,

    Je viens de découvrir quelque chose qui me semble assez étrange :

    la fonction "arrondi" d'Excel ne donne pas les mêmes résultats que la fonction "round" en macro ... mais seulement pour certaines valeurs.

    par exemple :

    6.25 est arrondi à 6.3 avec "arrondi" mais à 6.2 avec "round"
    idem pour 6.45 / 6.65 / 6.85

    en revanche pour toutes les autres décimales à 2 chiffres je trouve le même résultat sur les 2 fonctions.
    6.75 est arrondi à 6.8 avec "arrondi" et aussi avec "round"

    quelqu'un a-t-il une explication ? et une solution pour que je puisse trouver une formule en macro qui me donne 6.3 comme arrondi de 6.25 ?

    Merci par avance,

    Emily.

    PS. je précise que je ne peux pas taper directement ma fonction Excel avec guillemets et crochets dans vba car mon arrondi intervient dans une boucle for ... next avec par conséquent des valeurs changeantes de ce qui est à arrondir.

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,

    Edit : je viens d'essayer Roundup mais ça arrondi systématiquement à l'entier supérieur par exemple 6.21 donnera aussi 6.3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.WorksheetFunction.RoundUp(6.25, 1)
    Edit2: un lien ici

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Ce qui m'étonne le plus c'est que je constate un écart pour les valeurs 6.25 / 6.45 / 6.65 et 6.85 mais pas pour 6.15 ou 6.75 .... ???

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Ce qui m'étonne le plus c'est que je constate un écart pour les valeurs 6.25 / 6.45 / 6.65 et 6.85 mais pas pour 6.15 ou 6.75
    Oui, je crois que c'est une méthode d'arrondi dit bancaire ?

    L'arrondi n'est pas le même si le chiffre est pair ou impair !

    Edit : j'ai trouvé sur le net une fonction perso qui peut convenir ( a tester) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test_Arrondi()
    MsgBox MyRound(6.25, 1)
    End Sub
     
    Public Function MyRound(ByVal v As Double, ByVal dec As Integer) As Double
     
        MyRound = Int((v * (10 ^ dec)) + 0.5) / (10 ^ dec)
    End Function

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PS. je précise que je ne peux pas taper directement ma fonction Excel avec guillemets et crochets dans vba car mon arrondi intervient dans une boucle for ... next avec par conséquent des valeurs changeantes de ce qui est à arrondir.
    Faut pas s'arrêter a ce genre de détaille on peux sans problème mettre des truc variable dans la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 1 To 10
    Range("A" & i).FormulaLocal = "=ARRONDI(" & 1.22 + i / 1000 & " ;2)"
    Next i
    Sinon pour l'affichage des nombre j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(valeur, "0.0##")
    Les 0 seront forcément présen les # facultitif 1.2 devient 1.2 2 devient 2.0 1.23456 devient 1.235

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Merci beaucoup, ça fonctionne très bien.

    J'écris ma fonction comme dans Excel et je programme un copier-coller en valeurs

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

Discussions similaires

  1. [Toutes versions] Fonction Arrondi faq dvp, qq explications svp !
    Par mondev dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/05/2010, 07h41
  2. Fonction arrondi suppérieur
    Par mims1664 dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/08/2009, 19h35
  3. ABAP fonction arrondi
    Par kitty2006 dans le forum SAP
    Réponses: 6
    Dernier message: 10/12/2007, 19h42
  4. pb fonction arrondi avec une requête
    Par lbailler dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/08/2007, 00h46
  5. Fonction arrondie supérieur
    Par Sebimpro dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2006, 10h21

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