VBA stocke mauvaise valeur dans cellule
Bonjour à tous,
Premier post ici, je vais essayer de présenter les choses clairement.
Pour une application pratique un peu longue à expliquer ici, je fais tourner des points sur excel via des matrices de rotation. Mon but est de varier un angle jusqu'à aligner 4 points selon l'axe x (les 4 valeurs en rouge sur la feuille 2 du fichier joint). Pour ça je fais donc varier un premier angle de rotation teta de 20 à 23 et je récupère l'angle qui me donne la plus petite différence possible. Je fais ensuite varier un deuxième angle de rotation de 2 à 10 et je voudrais de nouveau récupérer l'angle qui me donne la différence minimales entre les points qui m’intéresse. Le problème c'est que VBA ne semble pas respecter les consignes que je lui donne.
Mon code est le suivant :
For Alpha = 2 To 10 Step 0.005
Range("N7").Value = Alpha
ZeroAlpha1 = Abs(Range("B27").Value - Range("B31").Value)
ZeroAlpha2 = Abs(Range("B30").Value - Range("B34").Value)
Range("B23").Value = ZeroAlpha
Cells(6, 15).Value = "Alpha"
Cells(6, 16).Value = "ZeroAlpha1"
Cells(6, 17).Value = "ZeroAlpha2"
Cells(6, 18).Value = "SumAlpha"
If ZeroAlpha1 < ValMax And ZeroAlpha1 > ValMin And ZeroAlpha2 < ValMax And ZeroAlpha2 > ValMin Then
For LineNumberAlpha = 7 To 100 Step 1
If IsEmpty(Cells(LineNumberAlpha, 15)) Then
Cells(LineNumberAlpha, 15).Value = Round(Alpha, 3)
Cells(LineNumberAlpha, 16).Value = Round(ZeroAlpha1, 5)
Cells(LineNumberAlpha, 17).Value = Round(ZeroAlpha2, 5)
Exit For
End If
Next
End If
Next
Donc la cellule Cells(LineNumberAlpha, 15).Value devrait contenir un nombre avec 3 décimales puisque Alpha varie par pas de 0.005 mais comme ce n'est pas le cas j'ai imposé un arrondi à 3 chiffre après la virgule et la valeur retournée pour Alpha est toujours à x (10?) chiffres après la virgule...
Cette partie de mon code est un copier-coller du calcul de teta qui fonctionne très bien et j'ai beau me relire et refaire mon code pour alpha, je ne vois pas ce que j'ai pu rater...
Je ne sais pas si je suis très claire mais je suis ouverte aux suggestions et questions !
Merci
Bonjour,
essaie avec :
Dim Teta As Double, Alpha As Double
Dim ZeroTeta1 As Double, ZeroTeta2 As Double, ZeroAlpha1 As Double, ZeroAlpha2 As Double, ZeroAlpha3 As Double, ZeroAlpha4 As Double
Dim ValMin As Double, ValMax As Double
Dim LineNumberTeta As Double, LineNumberAlpha As Double
Dim PlusPetitTeta As Double, PlusPetitAlpha As DoubleDouble est plus précis et il faut typer toutes les variables une par une.
Sinon seule la dernière l'est.
eric
ça marche, merci !
Je n'ai pas utilisé VBA depuis un moment, j'aurais du déclarer en double en effet, par contre je en savais pas qu'on ne pouvais pas déclarer plusieurs variables à la fois dans ce langage... Bon à savoir !