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 :

Arrondi et cellule excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut Arrondi et cellule excel
    Bonjour,
    J'ai un probleme avec les arrondis à 2 chiffres dans excel. J'ai essayé plusieur methode sans succes.
    Le nombre inscrit dans la cellule est bien arrondi. Mais la cellule garde en memoire les chiffre apres la virgule.
    Exemple:
    valeur ht en cellule(2,2)=55.22
    valeur tva en cellule(2,3)=LC(-1)*19.6/100 donne 10.82312
    valeur ttc en cellule(4,4)=LC(-2)+LC(-1) donne 66.04312

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a = 3
    For i = 2 To 4
        Cells(a, i) = FormatNumber(Cells(2, i), 2)
    Next i
    'TTC-HT-TVA devait donner 0
    Cells(a, 5) = Cells(a, 4) - Cells(a, 2) - Cells(a, 3)
    Les cellules de destinations sont bien arrondis, 55.22 ; 10.82 ; 66.04
    mais le TTC - TVA - HT donne 7,10543E-15 au lieu de 0. Les valeurs des cellule ne sont donc pas arrondis.

    J'ai le même résultat avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells(a, i) = CLng(Cells(2, i) * 100) / 100
    Cells(a, i) = Fix(Cells(2, i) * 100) / 100
    Cells(a, i) = Round(Cells(2, i) * 100) / 100
    Auriez-vous une solution?
    Merci

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Heu... et en ajoutant une paire de parenthèses ? histoire de bien définir le calcul à l'intérieur de la fonction Round (et en lui donnant le nombre de décimales) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(a, i) = Round((Cells(2, i) * 100) / 100), 2)

  3. #3
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonjour,


    la fonction TRONQUE ...

    Mais je suis pas d'accord avec toi quand tu dis qu'en arrondissant tous les membres de ton opération ( TTC - HT - TVA) tu devrai avoir 0, comme résultat.. tu as plus de chance d'avoir 0 si tu n'arrondi pas .

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Par défaut
    Bonjour,

    Essayes avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a = 3
    For i = 2 To 4
        Cells(a, i) = Round(Cells(2, i), 2)
    Next i
    'TTC-HT-TVA devait donner 0
    Cells(a, 5) = Cells(a, 4) - Cells(a, 2) - Cells(a, 3)
    Le format d'affiche ne modifie que l'affichage du nombre et pas le nombre lui-même. C'est donc purement visuel: Tandis que l'utilisation de la fonction arrondi modifie le nombre en l'arrondissant.

    La fonction tronque va couper le nombre par rapport aux nombre de décimales indiquées en paramètre. Par contre, ce nombre ne sera pas arrondi.

    Ainsi, la fonction TRONQUE(10,596;2) donne comme résultat 10,59.
    Tandis que la fonction ARRONDI(19,596;2) donne comme résultat 10,60.

    PS : Pour préciser, lorsqu'on n'indique pas le nombre de chiffres après la décimale pour la fonction ARRONDI, on va arrondir au nombre entier le plus proche.

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Je vois que nous sommes trois à avoir répondu en même temps. Mais il est impardonnable de ma part de ne t'avoir pas souhaité la bienvenue (ça fait partie de mon boulot de modératrice).

    Donc : bienvenue sur le forum DVP! (suite par MP).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Bonjour,
    Merci pour vos reponses, mais j'obtiens toujour le même resultat.
    Avez-vous essayé ce code sur vos ordis? Ca vous donne la même chose que moi?
    C'est etrange non !

    Je travail avec des arondis, pour étre au centime et ce probléme m'engendre des erreures dans le cas de cumule de calculs.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour Guillaume89,

    Je ne sais pas si bien tout compris, mais votre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 2 To 4
        Cells(a, i) = FormatNumber(Cells(2, i), 2)
    Next i
    n'implique pas que votre nombre soit arrondi à 2 décimales, c'est uniquement au niveau de l'affichage mais Excel conserve en mémoire votre nombre avec 15 chiffres (si mes souvenirs sont bons) sauf si dans les options vous avez coché "Calcul avec la précision au format affiché".

    Par contre si lors du calcul de la tva vous indiquez :

    tva = Round(ht * tauxtva / 100, 2)

    il ne devrait pas y avoir de problème d'arrondi (en tout cas je n'en ai pas).

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Merci pour ta réponse Jacques,
    Mais fait l'expérience suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Essai_arrondi()
        'Avec 55.22 dans la cellule (10.2)
        Cells(10, 3) = Round(Cells(10, 2) * 19.6 / 100, 2) 'donne 10.82
        Cells(10, 4) = Cells(10, 2) + Cells(10, 3) 'donne 66.04
        Cells(10, 5) = Cells(10, 4) - Cells(10, 2) - Cells(10, 3) '66.04-55.22-10.82 ne donne pas 0!!
    End Sub
    Etonnant non?

Discussions similaires

  1. Comment décaller un bloc de cellule Excel en VBA
    Par bbkenny dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/01/2005, 20h00
  2. Couleur de fond cellule excel
    Par Grouik dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/07/2004, 09h43
  3. [VBA-E] recuperer le texte d un commentaire de cellule excel
    Par Verbal-Quint dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2004, 10h27
  4. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18
  5. Récupérer la couleur d'une cellule excel par Delphi
    Par teamsebracing dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 05/06/2003, 14h50

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