Calcul des angles d'un triangle Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
r
rocket4
Membre impliqué
Membre impliqué
Messages : 1'178
Appréciations reçues : 3
Inscrit le : 30 août 2011
Version d'Excel : 2010

Message par rocket4 » 22 février 2019, 17:51

Bonsoir , j'ai elaboré un programme qui tourne pour calculer les angles aux sommets d'un triangle mais c'etait un peu laborieux
Option Base 1

Sub calcul_angles_triangle()

a = Array(1, 2) '1ier vecteur
b = Array(2, 6) '2 ieme vecteur
c = Array(0, 1) '3 ieme vecteur
Point = Array(a, b, c)

For i = 1 To 3
  For j = 1 To 3
    If i <> j Then
       x = x & " " & i & j
     End If
  Next
 Next

s = Split(x, " ")
For i = 1 To UBound(s)
 If i Mod 2 <> 0 Then
  w = w & " " & s(i) & s(i + 1)
 End If
Next

 e = Split(w, " ")

  For j = 1 To UBound(e)
    ps = (Point(Val(Mid(e(j), 2, 1)))(1) - Point(Val(Mid(e(j), 1, 1)))(1)) * (Point(Val(Mid(e(j), 4, 1)))(1) - Point(Val(Mid(e(j), 3, 1)))(1)) + (Point(Val(Mid(e(j), 2, 1)))(2) - Point(Val(Mid(e(j), 1, 1)))(2)) * (Point(Val(Mid(e(j), 4, 1)))(2) - Point(Val(Mid(e(j), 3, 1)))(2))
    norme_vecteur1 = Sqr((Point(Val(Mid(e(j), 2, 1)))(1) - Point(Val(Mid(e(j), 1, 1)))(1)) ^ 2 + (Point(Val(Mid(e(j), 2, 1)))(2) - Point(Val(Mid(e(j), 1, 1)))(2)) ^ 2)
    norme_vecteur2 = Sqr((Point(Val(Mid(e(j), 4, 1)))(1) - Point(Val(Mid(e(j), 3, 1)))(1)) ^ 2 + (Point(Val(Mid(e(j), 4, 1)))(2) - Point(Val(Mid(e(j), 3, 1)))(2)) ^ 2)
    
  MsgBox Round((Application.WorksheetFunction.Acos(ps / (norme_vecteur1 * norme_vecteur2))) * 180 / 3.14, 2) 'retourne les angles aux sommets
  Next

End Sub
Il marche puisque la somme des angles obtenus fait 180° environ , peut on faire plus court ?...tel quel ca me semble etre mal pensé ou trop lourd ? Merci
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'407
Appréciations reçues : 306
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 23 février 2019, 05:55

Bonjour

Un vieux document, retrouvé dans mes archives...
Si cela t'intéresse...

Bye !
Résolution des triangles.xls
(86.5 Kio) Téléchargé 28 fois
Avatar du membre
yg_be
Jeune membre
Jeune membre
Messages : 21
Appréciation reçue : 1
Inscrit le : 23 février 2019

Message par yg_be » 24 février 2019, 13:02

bonjour, quelques suggestions:
1° ajouter
option explicit
en début de module
2° utiliser des noms de variables qui aident à comprendre à quoi sert chaque variable
3° ajouter quelques commentaires. au minimum, expliquer comment tu représentes ton triangle. peut-être aussi, pourquoi pas, expliquer quelle technique mathématique tu utilises pour réaliser ce travail.
Avatar du membre
yg_be
Jeune membre
Jeune membre
Messages : 21
Appréciation reçue : 1
Inscrit le : 23 février 2019

Message par yg_be » 24 février 2019, 14:27

ceci me semble plus clair:
Option Explicit
Option Base 0
Sub calcul_angles_triangle()
Dim Point(), s0, s1, S2, ps, norme_vecteur1, norme_vecteur2, angle

Point = Array(Array(1, 2), Array(2, 6), Array(0, 1))
  For s0 = 0 To UBound(Point)
    s1 = (s0 + 1) Mod 3
    S2 = (s1 + 1) Mod 3
    ps = (Point(s1)(0) - Point(s0)(0)) _
        * (Point(S2)(0) - Point(s0)(0)) _
        + (Point(s1)(1) - Point(s0)(1)) _
        * (Point(S2)(1) - Point(s0)(1))
    norme_vecteur1 = Sqr((Point(s1)(0) - Point(s0)(0)) ^ 2 + (Point(s1)(1) - Point(s0)(1)) ^ 2)
    norme_vecteur2 = Sqr((Point(S2)(0) - Point(s0)(0)) ^ 2 + (Point(S2)(1) - Point(s0)(1)) ^ 2)
    angle = Round((Application.WorksheetFunction.Acos(ps / (norme_vecteur1 * norme_vecteur2))) * 180 / WorksheetFunction.Pi(), 2)
  MsgBox angle
  'Debug.Print angle 'retourne les angles aux sommets
  Next

End Sub
r
rocket4
Membre impliqué
Membre impliqué
Messages : 1'178
Appréciations reçues : 3
Inscrit le : 30 août 2011
Version d'Excel : 2010

Message par rocket4 » 24 février 2019, 14:37

Merci gmb et yg_be je vais voir de près vos suggestions, un grand merci :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message