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 :

Format de cellule :3 chiffres aprés la virgule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Points : 436
    Points
    436
    Par défaut Format de cellule :3 chiffres aprés la virgule
    Bonjour Forum
    Je travaille sous excel-VBA 2000.Je voudrai changer le format d'une cellule le mettre 3 chiffre aprés la virgule et ensuite utiliser le nombre à 3 chiffre aprés la virgule pour faire mes calculs.Sauf que le macro que je fais met le format de la cellule à 3 chiffre apres la virgule mais ne l'utilise pas pour les calculs il utilise plutot le nombre non arrondi à 3 chiffre. Voila le macros que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1()
     
        Range("D4").Select   ' dans D4 j'ai mis la valeur 1.444444
       Selection.NumberFormat = "0.000"
       Range("A1") = Range("D4").Value * 1
     
    End Sub
    Dans range A1 je m'attendai a la valeur: 1,444
    non pas a la valeur 1,444444
    Et pourtat la cellule D4 est bien arrondi quand j'execute le macro à 1,444

    Merci d'avance et Vive le Forum

  2. #2
    Membre habitué Avatar de Orhleil
    Homme Profil pro
    Intégrateur fonctionnel
    Inscrit en
    Mai 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Intégrateur fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 81
    Points : 152
    Points
    152
    Par défaut
    Salut à toi,
    En fait, quand tu demandes à Excel le format "0,000" pour la cellule D4, Excel affiche le nombre avec le format demandé, mais la valeur gardée en mémoire est la valeur complète, et ce de façon précisément à garder des calculs exacts.

    Donc deux solutions s'offrent à toi :
    -soit tu souhaites faire les calculs sur les valeurs exactes et n'afficher que 3 chiffres après la virgule, auquel cas tu peux simplement faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").NumberFormat = "0.000"
    -soit tu arrondis vraiment la valeur dans D4, dans ce cas au lieu de...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D4").NumberFormat = "0.000"
    tu fais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D4").Value = Round(Range("D4").Value, 3)
    ...et après ça tes calculs utiliseront bien la valeur tronquée puisque c'est celle qui aura été enregistrée en mémoire

  3. #3
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Dans ce contexte, tu peux utiliser la propriété Text de l'objet range, et le pouvoir d'interprétation d'Excel ainsi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1_B()
     
        Range("D4").Select   ' dans D4 j'ai mis la valeur 1.444444
       Selection.NumberFormat = "0.000"
       Range("A1") = Range("D4").Text * 1
     
    End Sub
    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Points : 436
    Points
    436
    Par défaut
    Merci beaucoup à vous orhleil et Didier toutes les deux solutions sont

    pertinentes et adaptées à mon probléme je n'ai que l'embarras du choix

    You do so much good pour la communauté !!!!!!!!!!!!!!!!!!!!!!!!

    Vive le Forum !!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/07/2012, 17h25
  2. [POI]: définir une cellule arrondi a 2 chiffre après la virgule
    Par mouss4rs dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/02/2012, 15h04
  3. [Débutant] format chiffre après la virgule
    Par Kirua76 dans le forum C#
    Réponses: 7
    Dernier message: 06/10/2011, 16h15
  4. Formater une valeur 2 chiffre aprés la virgule en Tquery.SQL
    Par amireve dans le forum Bases de données
    Réponses: 6
    Dernier message: 19/05/2007, 11h17
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49

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