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 Double

Double 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 !

Rechercher des sujets similaires à "vba stocke mauvaise valeur"