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 :

Variable à 2 décimales affichée avec 14 [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut Variable à 2 décimales affichée avec 14
    Bonjour,

    j'ai tenté de chercher sur google sans trouver la terminologie adéquat pour trouver la solution de mon problème...
    J'ai déjà eu le cas mais impossible de me souvenir comment j'avais géré ça.

    Voici donc de quoi il s'agit.

    j'ai une variable de type Single dans laquelle je charge une valeur assemblée (ex : 4 & "," & 79)
    Ma variable affiche bien 4,79 (pj n°1) :

    Nom : Code.png
Affichages : 1116
Taille : 15,9 Ko

    Par contre une fois que j'affecte ma valeur dans une case de am feuilel de calcul j'ai tout un tas de décimales sorties d'on ne sais où...

    Nom : valeur.png
Affichages : 851
Taille : 17,8 Ko


    J'ai tenté d'arrondir ma valeur "round(n,2)", de gérer le format "formatnumber(n,2)", sans succés.

    Quelqu'un a-t-il une idée sur la question ?

    Par avance merci de votre aide.

  2. #2
    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,

    C'est une problème qu'on rencontre parfois lié au mode de calcul des ordinateurs. Regarde cette page :

    https://support.microsoft.com/kb/125056/fr

    Les méthodes suivantes fonctionnent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sys_solaire = Round(Sys_solaire, 2)
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("E1").Value = Sys_solaire
        Range("E1").NumberFormat = "0.00"

  3. #3
    Futur Membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut
    Merci pour votre réponse.

    Je n'arrive pas à charger la page de MS...

    J'ai déjà testé ces options.
    Comme indiqué dans ma question j'ai testé la fonction "round(n,2)" (ainsi que la fonction "formatnumber(n,2)") sans succès.
    De toute façon ces deux fonctions ont pour but d'arrondir la variable or elle l'est déjà.

    Comme on le voit dans ma pj la valeur de la variable est bien 4,79.

    L'autre option proposée concerne le format visuel d'excel, on verra bien 4,79 mais le contenu de la cellule sera toujours le même : 4,78999...etc...

    Et je sèche toujours :/

  4. #4
    Futur Membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut
    J'ai retrouvé le message que j'avais fait à l'époque (j'avais perdu mon id...)

    Le voici : http://www.developpez.net/forums/d10...string-single/

    Fort de cette découverte j'ai stocké ma variable en "string" puis j'ai convertit ma cellule avec la méthode indiqué de "cellule au format texte" en "cellule de nombre".
    Nickel.

    Mais non, ça ne fonctionnait pas avec les chiffres ayant 3 décimales...
    Il m'affichait 4103 au lieu de 4,103.

    J'ai donc compris mon problème.

    Une question de format système...

    Mon excel est paramètré pour utiliser la virgule "," comme séparateur entier/décimal alors que mon système utilise le point "."...

    Le code à utiliser était donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sys_Solaire = Mid(pos, 2, 1) & "." & Mid(pos, 4, 1)
    tout fonctionne maintenant.

    Merci d'avoir pris le temps de me lire, d'y réfléchir et de me répondre.

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bravo mais .... cependant, ce n'est pas très propre de mon point de vue et risqué....

    1 Attention à vos déclarations de variables et aux conversions implicites faites par VBA

    vous déclarerz Sys_Solaire comme un single mais vous le traitez ensuite comme un string et c'est VBA qui se débrouille ....
    sys_Solaire = Mid(pos, 2, 1) & "." & Mid(pos, 4, 1)

    2. Vous pouvez aussi utiliser la fonction split ou like pour optimiser votre code

    Bonne journée

  6. #6
    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
    @ bill_barroud

    J'ai déjà testé ces options.
    Sûr ?

    Les deux fonctionnent; et si "NumberFormat" ne fait qu'afficher le format sans changer la valeur, si tu avais imposé un format "Nombre" sur la colonne, tu ne te serais pas aperçu de l'écart, ni à l'affichage ni ,très probablement, avec les éventuels calculs postérieurs.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut
    Citation Envoyé par vinc_bilb Voir le message
    Bravo mais .... cependant, ce n'est pas très propre de mon point de vue et risqué....

    1 Attention à vos déclarations de variables et aux conversions implicites faites par VBA

    vous déclarerz Sys_Solaire comme un single mais vous le traitez ensuite comme un string et c'est VBA qui se débrouille ....
    sys_Solaire = Mid(pos, 2, 1) & "." & Mid(pos, 4, 1)

    2. Vous pouvez aussi utiliser la fonction split ou like pour optimiser votre code

    Bonne journée
    Je ne connaissais pas "split" et "like" et je ne suis pas certains d'arriver à en appréhender toute les subtilités.

    Pour revenir à vos remarques, je pense en effet qu'initialement mon erreur était là également : en entrant une valeur formatée comme on formate une chaine de caractère (mid & "" & mid) dans une variable de type Single.

    Ce que je n'ai pas précisé lors de mon post de cloture c'est que j'ai aussi changé de type variable, je la déclare en "string" et plus en "single".

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

Discussions similaires

  1. [ODS] Création format numérique avec sélection du nombre de décimale à afficher
    Par edward carnby dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 27/02/2012, 15h50
  2. Convertir variable Single en String avec deux décimales
    Par Pierre.g dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2008, 13h18
  3. Réponses: 16
    Dernier message: 07/04/2005, 11h36
  4. Réponses: 4
    Dernier message: 04/03/2005, 11h56
  5. [VB.NET] Variable de type enum avec du string
    Par Mouse dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/01/2005, 18h22

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