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 :

Problème code "Arrondir" [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Par défaut Problème code "Arrondir"
    Bonjour,

    J'ai un problème avec un code pour arrondir le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Function GetRound(ByVal Expression As String, Optional DecimalDigitsNumber As Byte = 2, Optional RoundToFive As Boolean = True) As Double
    'Cette fonction sert à arrondir les valeurs comme la fonction ARRONDI de EXCEL
    'Sur VB, la fonction intégrée Round ne correspond pas à celle d'Excel:
    'Round(2.5,0)= 2 et ARRONDI(2.5,0)=3
     
    Dim ApproximationValue As Single
    If RoundToFive = True Then
        ApproximationValue = 0.5
    Else
        ApproximationValue = 0.49
    End If
    GetRound = CDbl(Expression) * (10 ^ DecimalDigitsNumber)
    GetRound = Int(GetRound + ApproximationValue) * (10 ^ -DecimalDigitsNumber)
     
    End Function

    Cela fait une semaine que je fais du code VB et je comprend pas tout dans ce code. Si vous pouviez me l'expliquer ça serait sympa.

    Cette fonction est appelée un peu partout dans le logiciel (constituer de macro XL 2007).

  2. #2
    Invité
    Invité(e)
    Par défaut bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function GetRound(ByVal Expression As String, Optional DecimalDigitsNumber As Byte = 2, Optional RoundToFive As Boolean = True) As Double
    Expression est un string:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ?cdbl("1.1") 'Errer ce n'est pas du numérique paramètre régionaux. 
     
    ?cdbl("1,1")'Ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function GetRound(ByVal Expression As Double, Optional DecimalDigitsNumber As integer = 2, Optional RoundToFive As Boolean = True) As Double

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour Irhok

    'Sur VB, la fonction intégrée Round ne correspond pas à celle d'Excel:
    'Round(2.5,0)= 2 et ARRONDI(2.5,0)=3
    Il y a plusieurs fonctions sur Excel et VBA pour arrondir et chacune est différente des autres.

    http://support.microsoft.com/kb/196652/EN-US


    'Cette fonction sert à arrondir les valeurs comme la fonction ARRONDI de EXCEL
    A mon avis, le plus sûr pour arrondir les valeurs comme la fonction ARRONDI de EXCEL, c'est d'utiliser la fonction ARRONDI de EXCEL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = WorksheetFunction.Round(-3.5, 0)

    Cordialement

    Docmarti

  4. #4
    Membre averti
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Par défaut
    J'ai corriger la fonction "GetRound" comme indiqué dans ton message rdurupt mais il affiche une autre erreur maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Principal.Prev_HRC3 = GetRound(HRCR(6), 1, True):
    Et le HCRC(6) est calculé grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HRC = GetRound((-1.483 * (10 ^ (-10)) * (HVR(ii) ^ 4)) + (4.464 * (10 ^ (-7)) * (HVR(ii) ^ 3)) - ((5.468 * 10 ^ (-4)) * (HVR(ii) ^ 2)) + (0.3563 * HVR(ii)) - 38.93, 1, True)
        If (HRC >= 20.5) Then
            HRCR(ii) = HRC
        Else
            HRCR(ii) = ""
        End If
    Language informatique 52 - Irhok 0 => GAME OVER !!

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    @Irhok

    Cette fonction semble originer de cette page. Où tu en trouves 2 versions avec le mode d'emploi.




    Docmarti

  6. #6
    Invité
    Invité(e)
    Par défaut
    ta fonction tu la vue fonctionné dans ça version précédente?
    si oui on agira en conséquence!

  7. #7
    Membre averti
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Par défaut
    J'ai choisi la solution radicale j'ai supprimer la fonction GetRound dans les lignes où elle faisait planter le logiciel. Cependant, j'ai quand même garder la fonction car elle est utilisé dans d'autre parties du code.

    Merci pour votre efficacité.

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

Discussions similaires

  1. [Wamp] Problème d'insertion avec quote d'un formulaire
    Par cyberdevelopment dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/08/2006, 18h55
  2. [SQL-Server] Problèmes de guillemets et quotes dans un INSERT
    Par gregb34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 09h40

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