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 :

VBA - Calculer avec précision décimale [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Luxembourg

    Informations forums :
    Inscription : Septembre 2007
    Messages : 120
    Par défaut VBA - Calculer avec précision décimale
    Bonsoir,

    Je ne parviens pas à afficher le résultat d'un calcul avec une précision à 2 décimales. Le résultat affiche un nombre rond. Comment puis-je procéder?

    Le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function TotAchat(Q, P As Integer)
    'Prix total de l'achat de part(s)
    Dim R As Integer
        quantity = Q
        price = P
        result = R
            result = quantity * price
        TotAchat = result
    End Function
    Dans une feuille Excel, la cellule contient la formule dont le format est "Nombre, 2 décimales"

    =TotAchat(C11;D11)

    Le résultat affiche (par ex) : 100,00 au lieu de 100,25 (valeur réelle)

    Merci de m'aider
    A+

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu déclares P comme Integer (donc un entier), ce qui te donne donc un résultat Entier.

    Il faut que tu le déclares en double ou en simple, de plus une fonction doit renvoyer un type.

    Mais le mieux pour des prix est le type Currency

    De plus, je ne vois pas l'intérêt de créer une fonction qui est une simple multiplication, de plus il y a plein de choses inutiles à l'intérieur.

    Si tu tiens à garder une fonction, il faudrait quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function TotAchat(Q As Long, P As Currency) As Currency
        TotAchat = Q * P
    End Function
    Mais personnellement je n'en vois pas l'intérêt.

    Philippe

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Luxembourg

    Informations forums :
    Inscription : Septembre 2007
    Messages : 120
    Par défaut
    Bonjour et bonne année 2010,

    Merci d’avoir répondu et d’avoir consacré un peu de ton temps sur ce problème. Je voudrais juste préciser qu’il n’y a pas de questions sans intérêts même si l’exemple que j’ai formulé est très simpliste et n’a que peu d’intérêt dans une feuille de calcul.
    Actuellement j’attaque le chapitre des procédures « Function » et la procédure que tu m’as gracieusement corrigée m’est très utile afin de pouvoir construire des fonctions personnalisées plus complexes à l’avenir.
    Ta correction en dit long pour un débutant dans le domaine des fonctions. De la documentation sur ce chapitre est-elle disponible sur le site?

    A+

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Au niveau cours pour débutant, tu as pas mal de choses sur les tutos Excel, Access et Word, tout les liens sont en haut de cette page.

    Philippe

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

Discussions similaires

  1. Nombres décimaux, arrondissement avec précision décimale.
    Par Oscar Hiboux dans le forum Contribuez
    Réponses: 3
    Dernier message: 14/09/2009, 04h52
  2. [VBA-E]calcul avec filtre
    Par Romory dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2007, 17h40
  3. Calcul avec décimales
    Par LE CORRE dans le forum C
    Réponses: 17
    Dernier message: 25/02/2007, 18h27
  4. [VBA-E] Calcul avec incrémentation
    Par dahu29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2006, 09h36
  5. Réponses: 3
    Dernier message: 23/01/2006, 10h10

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