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 :

Variables currency et single


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut Variables currency et single
    Bonjour,

    Un utilisateur me pose une colle sur les variables de type single et currency. Avec la valeur 1500.15678 en B2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim ValMonetaire As Currency, ValSingle  As Single
     
    ValMonetaire = Cells(2, 2).Value
    ValSingle = Cells(2, 2).Value
     
    Cells(5, 2).Value = ValMonetaire
    Cells(7, 2).Value = ValSingle
    je récupère 1500.15673828125 en B7 (format standard et barre de formule)
    1500.16€ en B5 (format monétaire 2 décimales et 1500.16 dans la barre de formule)

    Avez-vous une explication ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    j'obtiens le même résultat en direct sans les variables - inutiles - alors c'est le résultat de la conversion monétaire.

    Pour de la précision utiliser   CDbl   …

    ___________________________________________________________________________________________________________
    Je suis Paris, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Oui si le format est déjà au format monétaire. Si le format est au format standard, pourquoi une valeur à 5 décimales en entrée donne-t-elle un résultat à deux décimales ? Pour le type Single, comment expliquer le résultat ?

    Merci d'avance.

    Daniel

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Non, c'est dû au format de conversion, voir les explications déjà présentes sur le net et même peut-être déjà sur ce forum.

    Aucun souci en format Double …

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Aucun souci en format Double
    Les variables de type Currency sont stockées sous la forme de nombres de 64 bits (8 octets).
    Ce type de données est utilisé dans les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une grande précision est requise
    Donc plus sûr que le format Double

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    et pour compléter Currency est en Entier à virgule fixe 4 décimales (d'où la précision supérieure à un Double, celle d'un entier mais avec des décimales limitées) dont 2 d'affichées, les 2 suivantes sont justement là pour s'affranchir des problèmes de pertes de précisions dues aux conversions.
    Avec on a des centimes exacts ce qui est leur but, contrairement à un stockage avec mantisse et exposant (réel flottant)
    eric

Discussions similaires

  1. Conserver le format d'une cellule définie en variable (currency)
    Par 419 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/03/2016, 23h18
  2. Réponses: 14
    Dernier message: 26/03/2011, 15h48
  3. variable de type single dans FormulaR1C1
    Par bbouling dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/04/2008, 15h25
  4. [fmincon] Problème avec des variables de classe Single
    Par Wassim123 dans le forum MATLAB
    Réponses: 5
    Dernier message: 11/10/2007, 17h01

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