begin process at 2012 02 15 21:08:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Décimales et VBA


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Décimales et VBA

mercredi 11 février 2009 à 15:02:43 | Décimales et VBA

DoDwDn_

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).

Voici le code tout bête :
[...]
With bd2
        .Range("B" & li2) = mat.Range("J24")
        .Range("C" & li2) = mat.Range("J22")
        .Range("D" & li2) = mat.Range("G32")
        .Range("E" & li2) = mat.Range("J26")
        .Range("F" & li2) = mat.Range("J27")
        .Range("G" & li2) = mat.Range("J28")
        .Range("H" & li2) = mat.Range("J30")
        .Range("I" & li2) = mat.Range("J31")
        .Range("J" & li2) = mat.Range("J32")
    End With
[...]

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.

Je sèche complètement...
mercredi 11 février 2009 à 15:06:59 | Re : Décimales et VBA

hebus16

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à

mercredi 11 février 2009 à 15:21:25 | Re : Décimales et VBA

DoDwDn_

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 !).

Une autre idée ?
mercredi 11 février 2009 à 15:29:14 | Re : Décimales et VBA

hebus16

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
mercredi 11 février 2009 à 15:39:14 | Re : Décimales et VBA

DoDwDn_

Je veux récupérer et écrire le chiffre à 5 décimales.

J'ai testé avec les MsgBox, et la MsgBox "AVANT" ne prend pas la 5ème décimale.
Pour "0,01874", la MsgBox m'affiche un joyeux "0,0187".

L'arrondi est juste, mais les calculs seront faussés si cette fameuse 5ème décimale est omise.

Je comprends pas pourquoi VBA interprète ma valeur, alors que je ne lui demande rien d'autre que de la lire.

Je viens de me faire un petit test, et le résultat est toujours le même : "0,0187".

Sub test()
Dim px1 As String
Dim px2 As Double
px1 = Range("B23")
MsgBox px1
px2 = Range("B23")
MsgBox px2
End Sub

Je désespère....

mercredi 11 février 2009 à 16:08:11 | Re : Décimales et VBA

hebus16

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
mercredi 11 février 2009 à 16:16:54 | Re : Décimales et VBA

DoDwDn_

J'ai un format monétaire avec 5 décimales.

Je viens de tester en format nombre et cela fonctionne parfaitement !?

Je pense qu'on tient quelque chose...

Cela voudrait dire que VBA ne gère pas les décimales monétaires de la même manière que les décimales numéraires ?

As-tu de ton côté le problème d'arrondi avec un format monétaire ?
mercredi 11 février 2009 à 16:25:02 | Re : Décimales et VBA

hebus16

Réponse acceptée !
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
mercredi 11 février 2009 à 16:38:43 | Re : Décimales et VBA

DoDwDn_

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...

Merci beaucoup en tout cas pour ton aide !

 

mercredi 11 février 2009 à 16:41:09 | Re : Décimales et VBA

hebus16

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


1 2

Cette discussion est classée dans : vba, range, décimales, mat, li2


Répondre à ce message

Sujets en rapport avec ce message

VBA Word [ par Blanche ] Je travaille présentement avec Word et VBA. Dans la programmation, je dois faire effectuer des calculs où il y a des décimales. Je dois utiliser la VBA : Pb pour lire des données sur une autre page [ par cardise ] Je fais un prog style gestion. une fenêtre apparait avec 2 combobox : l'une se remplit avec des valeurs de la feuille active (OK!) et l'autre avec des VBA Excel [ par The_Diablange ] Bonjour, je cherche le moyen a l'aide de VBA d'écrire dans une zone de texte faite dans une feuille excel. J'ai essayé feuil1.range ("Zone de texte 1" [VBA] copier la colonne d'une feuille dans une autre feuille [ par leilin ] Bonjour, Je suis débutante en vba, d'ou ma question qui va certainement paraitre trés bete. J'ai crée un bouton avec une macro(code) derriere. Simplem VBA Excel : Utilisation précise de range [ par Cybertat ] Bonjour à tous, Je voudrais savoir si quelqu'un peut détailler l'utilisation de la méthode range... Ce sait que c'est une propriété simple (d'ailleur Problème sur macros vba [ par Morgan Kermor ] Bonjour tout le monde,Je débute sur vba et je rencontre quelques problèmes...So please help me...!!!Deux questions:Voici ma macro:<FONT Conversion String en NumberFormat en VBA [ par XGuarden ] J'utilise la formule suivanteActiveWorkbook.Sheets(k).Range("E13") = rs.Fields(0).Valuers est un dataset....il contient un string mais en réalité c'es vba Excel - CurrentRegion / Sélection de plages indéfinies [ par nil69 ] Bonjour, J'ai lu dans un tutoriel qu'il y avait moyen à partir d'une cellule de sélectionner le range le plus grand comprenant toutes les cellules no [VBA Excel] recuperer la lettre d'une colonne [ par tof008 ] Hello! Voila mon problème : Je dois ajouter automatiquement sur une ligne un nouveau mois, puis remplir la colonne de données...Je fais donc une boucl Copier coller en VBA [ par tortuegenie ] Bonjour, je souhaite copier une ligne se trouvant à l'indice ElementA et la coller à la ligne se trouvant à l'indice ElementA+1,Je ne sais pas comment


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales