Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problème de chiffres significatifs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de chiffres significatifs

n°1362962
scoobidoob​idooooo
Posté le 10-05-2006 à 08:30:07  profilanswer
 

J'ai un problème dans plusieurs macro VBA dans Excel: les chiffres sont du style 3.04999995231628 ou lieu d'être 3.05. Quand je fais tourner la macro en débuggueur, j'ai bien la valeur 3.05 mais quand je fais ThisWorkbook.Sheets("feuille" ).Cells(i, 1) = z (avec z valant 3.05), il me rentre la valeur approchée. Le nombre est déclaré comme étant un single.
 
A la limite, si en partant d'une valeur approchée il m'arrondissait le tout, ça serait normal mais là par contre...
 
Merci d'avance,
 
 
Stef

mood
Publicité
Posté le 10-05-2006 à 08:30:07  profilanswer
 

n°1362965
watashi
La démotivation : JAMAIS !
Posté le 10-05-2006 à 08:54:38  profilanswer
 

Salut scoobidoob,
 
tu peux essayer d'utiliser la fonction rnd() pour arrondir en VBA avant d'affecter ta valeur sur la cellule. Sinon tu peux placer un format sur ta cellule de destination (l'arrondi ne sera que visuel).
@+

n°1362978
scoobidoob​idooooo
Posté le 10-05-2006 à 09:16:10  profilanswer
 

La commande Rnd n'est pas très appropriée car je veux garder des chiffres significatifs. J'ai effectivement fait l'artifice de l'affichage mais ce qui me gêne ce sont les chiffres qui ne correspondent pas à ce que je veux. Comme on peut le voir, c'est à partir du 10^-8 que ça part en sucette, est-ce une différence de chiffres significatifs entre VBA et Excel?
 
Merci

n°1363002
scoobidoob​idooooo
Posté le 10-05-2006 à 09:49:30  profilanswer
 

Petite update:
 
Je fais
ThisWorkbook.Sheets("feuille" ).Cells(i, 1) = Round(z, 5) et il me fait toujours la même chose (même en mettant 1 à la place de 5)

n°1363077
tegu
Posté le 10-05-2006 à 11:02:25  profilanswer
 

Peux-tu donner la formule de calcul de z ?
J'aurais tendance à remettre en cause l'affichage du debogueur plutôt que Excel sur ce coup, mais il faudrait faire quelques tests.
Reste que je ne comprends pas pourquoi le Rnd() ne fonctionne pas.


Message édité par tegu le 10-05-2006 à 11:03:02
n°1363227
scoobidoob​idooooo
Posté le 10-05-2006 à 13:30:00  profilanswer
 

z = zc + i * step
 
avec i variant de 0 à imax, step=0.05 et zc=-16.2

n°1363281
tegu
Posté le 10-05-2006 à 14:01:06  profilanswer
 

Après quelques tests et sans entrer dans les détails, je te conseille d'utiliser un type Double plutôt que Single pour z.
Cela devrait te permettre d'utiliser la fonction Round() pour corriger ton problème.
 
Sinon la cause originelle dérive de l'implémentation même de la gestion des nombres décimaux en VBA (fonctions numériques et types de données)
Concernant les problèmes d'arrondi en VB/VBA, voir
http://ewbi.blogs.com/develops/200 [...] yet_a.html
http://support.microsoft.com/defau [...] -us;194983
http://www.vb-helper.com/howto_vba_round.html
http://www.vbaexpress.com/kb/getarticle.php?kb_id=513
 
Bon courage !

n°1363428
scoobidoob​idooooo
Posté le 10-05-2006 à 15:29:31  profilanswer
 

J'ai mis des Double à la place des Single et ça marche nickel. C'est bien un problème de transfert entre VBA et Excel... Milles merci pour l'aide ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problème de chiffres significatifs

 

Sujets relatifs
Problème javascriptprobleme d'alignement
[Résolu] [VB]problème avec envoi de mail sous VBprobleme de boucle avec une date résolu
Probleme syntaxe thread librairie pthreadProblème pour créer ma page web
[Js]Problème d'externalisation d'évènement onclick[JS] probleme pr instancier une objet
probleme : Select d'une requette MYSQLORACLE 9i : problème ISO 2
Plus de sujets relatifs à : problème de chiffres significatifs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR