Probléme de type VBA

Probléme de type VBA - VB/VBA/VBS - Programmation

Marsh Posté le 15-01-2007 à 18:44:08    

Bonjour,
 
Voici mon code VBA que j applique sous excel, la boucle fonctionne correctement mais lors de l'éxécution certaines valeurs sont erronées : elles affichent trop de décimal (environ 10^-8). Sauriez vous pourquoi?
 

Code :
  1. Sub NeauGraphique2()
  2.   Dim N As Double, L As Double
  3.   Dim Graphique As ChartObject
  4.   N = -2
  5.   With ActiveWorkbook.Worksheets("Polynomes" )
  6.     .Range("A1" ) = "Valeurs X"
  7.     .Range("B1" ) = "N+10"
  8.     .Range("C1" ) = "N+5"
  9.     For L = 2 To 402
  10.       .Range("A" & L) = "X=" & N
  11.       .Range("B" & L) = N + 10
  12.       .Range("C" & L) = N + 5
  13.       N = N + 0.01
  14.     Next L
  15.     .Range("A:C" ).Columns.AutoFit
  16.     Set Graphique = .ChartObjects.Add(0, 140, 600, 450)
  17.   End With
  18.   Graphique.Chart.SetSourceData Worksheets("Polynomes" ).Range("A1:C401" )
  19. End Sub


Merci d avance pour votre réponse

Reply

Marsh Posté le 15-01-2007 à 18:44:08   

Reply

Marsh Posté le 15-01-2007 à 21:10:46    

:hello:  
Peut-être que NumberFormat résoudrait le problème.

...
.Range("B" & L).NumberFormat = "##########0.00"
.Range("B" & L) = N + 10
.Range("C" & L).NumberFormat = "##########0.00"
.Range("C" & L) = N + 5
...


Message édité par olivthill le 15-01-2007 à 21:11:10
Reply

Marsh Posté le 17-01-2007 à 20:37:57    

Cette solutione ne fonctionne pas pour moi, c'est meme au niveau de la colonne A quand la boucle affecte ces valerus qu il y a un probléme!

Reply

Marsh Posté le 17-01-2007 à 20:39:49    

Bon, si c'est pour la colonne A, il faut mettre :
 
.Range("A" & L).NumberFormat = "##########0.00"
 
Edit :
Je viens de relire le programe initial, et je vois qu'il s'agit d'une chaine de caractère au lieu d'un champ numérique.
Dans ce cas il faudrait agir au niveau de la ligne  
 
.Range("A" & L) = "X=" & N
 
en la remplaçant par  
 
.Range("A" & L) = "X=" & CStr(CInt(N * 100) / 100)
 
CInt() fait une conversion en entier et CStr() fait une conversion en chaine de caractères.
Ou bien, il faudrait essayer avec les fonctions d'arrondis, mais je ne les ai pas en tête (je ne sais plus si c'est floor ou round).


Message édité par olivthill le 17-01-2007 à 20:44:30
Reply

Marsh Posté le 19-01-2007 à 20:39:54    

Parfait!!!Merci beaucoup!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed