OVH Cloud OVH Cloud

cosinus en vba sur exel 97

5 réponses
Avatar
mcnsaillard
bonjour,
Je suis à la "construction" d'un code me permettant de trouver un
angle d’un triangle.
j'en suis là (las aussi :-((( ) :
ang = (((a * a) + (c * c) - (b * b)) / (2 * a * c))
Je n'arrive pas à utiliser la fonction cosinus pour que ang = l'angle
en degré.
a,b,c sont les longueurs des cotés
ang est la valeur de l'angle opposé à b

merci de votre aide

5 réponses

Avatar
FxM
Nicolas S wrote:

bonjour,
Je suis à la "construction" d'un code me permettant de trouver un
angle d’un triangle.
j'en suis là (las aussi :-((( ) :
ang = (((a * a) + (c * c) - (b * b)) / (2 * a * c))
Je n'arrive pas à utiliser la fonction cosinus pour que ang = l'angle
en degré.
a,b,c sont les longueurs des cotés
ang est la valeur de l'angle opposé à b

merci de votre aide


Bonjour,

Premier point :
Excel utilise par défaut des radians pour les calculs d'angles.

Ensuite, je n'ai pas la même formule que toi. Ce que tu appeles ang
n'est pas l'angle mais son cosinus !

Dans un triangle quelconque possédant un coté de longueur b et un
angle opposé beta : b^2 = c^2 + a^2 -2ac cos (beta)

Tu cherches le beta (je ne vise personne en particulier ;o))
b^2 = c^2 + a^2 -2ac cos (beta)
b^2 - c^2 - a^2 = -2ac cos (beta)
- b^2 + c^2 + a^2 = 2ac cos (beta)
cos (beta) = (-b^2 + c^2 + a^2) / (2ac)
beta = degres(acos (...))

Par formule de feuille :
ÞGRES(ACOS((a*a -b*b +c*c)/(2*a*c)))
ÞGRES(ACOS((-B3*B3+B2*B2+B4*B4)/(2*B2*B4)))

Par macro ou fonction perso :
Sub test()
a = 1
b = 1
c = 1
cosb = (a * a + c * c - b * b) / (2 * a * c)
beta = _
Application.WorksheetFunction.Degrees(Application.WorksheetFunction.Acos(cosb))
End Sub

@+
FxM

Avatar
mcnsaillard
Alors, descend, descend et tu vas voir
Application.WorksheetFunction.Degrees(Application.WorksheetFunction.Acos(cosb))
application.worksheetfunction. ... permet d'utiliser des fonctions de

feuille dans VBA.
C'est ce que j'ai fini par comprenrde.Ton aide m'a été bénéfique, ca

marche.j'ai appliqué ta solution comme cela:

dans une premiere proc:

ang1 = (((a * a) + (c * c) - (b * b)) / (2 * a * c))
acos ang1

ce qui appelle:

Sub acos(cosb)

ang = Application.WorksheetFunction.Degrees(Application.WorksheetFunction.acos(cosb))
End Sub


L'aide sous Excel ou VBA, c'est F1. N'hésite pas à revenir si tu as
des problèmes.

F1 est presque la touche la plus "sale" de mon clavier ;-))



@+
FxM


merci FxM


Avatar
AV
Toutes les fonctions de feuille de calcul étant accessibles par la méthode
'Evaluate', tu pourrais aussi faire ça :

a = 1: b = 1: c = 1
cosb = (a * a + c * c - b * b) / (2 * a * c)
ang = Evaluate("Degrees(Acos(" & cosb & "))")

AV
Avatar
mcnsaillard
"AV" wrote in message news:...
Toutes les fonctions de feuille de calcul étant accessibles par la méthode
'Evaluate', tu pourrais aussi faire ça :

a = 1: b = 1: c = 1
cosb = (a * a + c * c - b * b) / (2 * a * c)
ang = Evaluate("Degrees(Acos(" & cosb & "))")

AV


bonjour Alain et merci de ta participation.
J'ai essayé le code que tu m'as transmis, la valeur que me donne ang
est "erreur 2015".
J'utilise excel 97-sr1

@+
j'en profite pour remercier l'ensemble des Joyeux Participants
Serviables pour l'animation de ce.... non DU forum dédié à Excel.
J'ai cru comprendre que la bonne humeur était une règle ici mais
pas employée _uste _our _auver les apparences. :-)))

Avatar
AV
bonjour Alain et merci de ta participation.
J'ai essayé le code que tu m'as transmis, la valeur que me donne ang
est "erreur 2015".
J'utilise excel 97-sr1


Ben je peux pas te dire avec XL97 sr1 mais avec XL97 sr2 ce truc là :

Sub zz()
a = 1: b = 1: c = 1
cosb = (a * a + c * c - b * b) / (2 * a * c)
MsgBox Evaluate("Degrees(Acos(" & cosb & "))")
End Sub

...me renvoie bien 60 !

AV