DoDwDn_
Messages postés12Date d'inscriptionsamedi 18 août 2007StatutMembreDernière intervention 2 mars 2009
-
11 févr. 2009 à 15:02
DoDwDn_
Messages postés12Date d'inscriptionsamedi 18 août 2007StatutMembreDernière intervention 2 mars 2009
-
16 févr. 2009 à 10:55
Bonjour à tous,
Je voux expose mon problème :
Je travaille avec des tarifs incluant 5 décimales.
Sur un tableau, tout fonctionne parfaitement, je peux exporter mes données sans problème.
Sur un autre tableau, vba m'arrondit mes valeurs au mieux à la 4ème décimale.
Mon code ne contient pas de variable de type Integer au lieu de Double, mes cellules sont bien formatées (de toute façon, la valeur est fausse dans la fenêtre exécution).
Il n'y a donc rien de problématique (le code pour les 2 tableaux est sensiblement le même).
J'ai tenté avec Round(mat.Range("J27"), 5) ou format(mat.Range("J27", "0.00000") et le résultat est le même, c'est à dire un arrondi à la 4éme décimale.
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 11 févr. 2009 à 16:25
ah bhé celle là elle est pas mal dis donc .. effectivement en format numéraires VBA s'enflamme et arrondi de base à 4 décimales ... choix Microsoft ? c'est space je pense que tu vas avoir un soucis de gestion de tes données .. je te conseille de tout passer en format numérique cela sera plus sur ... il te reste à gérer l'unité monetaire séparement
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 11 févr. 2009 à 15:06
Salut ,
J'aurai tendance à dire que cela vient des formats des cellules de gauche pas celle de droite ^^
En effet tu places dans les colonnes B C D E F G H I J les valeurs de la colonne J donc c'est la destination finale qui n'est pas bien formater
Sinon mets des mat.Range("J32").Value mais je suis pas sur que ca vienne de là
DoDwDn_
Messages postés12Date d'inscriptionsamedi 18 août 2007StatutMembreDernière intervention 2 mars 2009 11 févr. 2009 à 15:21
J'ai essayé de formater en numéraire ou monétaire, mais rien.
Ce qui me gêne plus, c'est qu'en mettant un tarif type '"0,0187" dans une cellule d'un classeur pour tester, en faisant, dans la fenêtre exécution : ? Range("B32") : il m'arrondit quand même ma valeur à "0,0187".
Pour moi, cela signifie que même VBA ne prend pas la bonne valeur.
Et je n'ai pas d'option type calcul au format affiché ou autre (d'ailleurs même le format affiché serait correct !).
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 11 févr. 2009 à 15:29
La je dois avouer que j'ai pas compris ton post ... tu peux toujours considéré que l'arrondi de 0,0187 est bel et bien égale à 0,0187 .. tu auras du mal à lui faire dire le contraire.
D'apres ce que j'ai compris tu as des données dans la colonne J qui posséde des chiffres à 5 decimales et tu veux les placer dans d'autres cellules mais ça réduit à 4 décimales ? as tu verifié avant la copie que c'est bien 5 decimales que tu passes et 4 que tu recuperes ?
Genre avant chaque copie fait un
Msgbox "AVANT " & bd2.Range("B" & li2).Value
bd2.Range("B" & li2) = mat.Range("J24")
Msgbox "APRES " & mat.Range("J24").Value
et regarde ce que les msgbox te retournent
Vous n’avez pas trouvé la réponse que vous recherchez ?
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 11 févr. 2009 à 16:08
Quand tu fais un clic droit sur ta cellule et que tu prends le format de cellule tu as quoi ? parce que c'est étrange que ta donnée de référence soit déjà arrondi ... de mon coté j'arrive pas à reproduire ton cas
DoDwDn_
Messages postés12Date d'inscriptionsamedi 18 août 2007StatutMembreDernière intervention 2 mars 2009 11 févr. 2009 à 16:38
J'avais mis le format monétaire pour une question de justesse d'affichage, mais bon, je vais passer le tout en numéraire (d'ailleurs, si ça se trouve personne ne le verra !).
Par contre, je me permet de modifier ta réponse :
hebus16 a dit :
ah bhé celle là elle est pas mal dis donc .. effectivement en format monétaire VBA s'enflamme et arrondi de base à 4 décimales ... choix Microsoft ? c'est space je pense que tu vas avoir un soucis de gestion de tes données .. je te conseille de tout passer en format numérique cela sera plus sur ... il te reste à gérer l'unité monetaire séparement
Je vais continuer à chercher les raisons de ce fonctionnement par ailleurs, histoire d'en savoir un peu plus...
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 11 févr. 2009 à 16:41
Pas de soucis ... je me suis enflammé je pensais déjà a la suite de ce que j'allais écrire à ce moment là mdr :p comme quoi il n'y pas que Excel qui fait n'importe quoi
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 11 févr. 2009 à 16:54
J'arrive après la guerre, et je n'ai rien testé mais, juste pour voir si ça peut aider.
Si tu tiens à garder ton format monétaire, tu peux peut-être essayer d'utiliser la propriété .text de ta cellule plutôt que la propriété .value (quand tu ne précises pas comme tu le fais, c'est la .value qui est utilisée). En effet, la propriété .text récupère ce qui est affiché dans ta cellule et non sa valeur (intéressant à savoir quand on use et abuse des formats personnalisés ).