Bonjour à tous
Je débute en vba et je rencontre quelques difficultés.
Je dois créer un programme permettant de calculer des distances (on a un rectangle de dimensions b et h et des droites inclinées d'un angle alpha qui coupent les côtés du rectangle. On a alors au maximum deux points d'intersection et ce que je cherche c'est la distance entre ces points).
J'ai donc créé un programme seulement il ne me retourne pas la valeur que je souhaite.
[codeFunction Rectangle(b, h)
PrécisionAlpha = 5
NbrCoupure = 5
Pi = Application.WorksheetFunction.Pi()
ReDim mtxRectangle(NbrCoupure, 180 / PrécisionAlpha + 1) 'Déclarer matrice des coupure (NbrCoupure) x (180 / PrécisionAlpha)
For i = 0 To 180 / PrécisionAlpha
alpha = i * PrécisionAlpha
mtxRectangle(0, i + 1) = alpha
For j = 1 To NbrCoupure
mtxRectangle(j, 0) = j
If alpha = 0 Or alpha = 180 Then
mtxRectangle(j, i + 1) = b
ElseIf alpha = 90 Then
mtxRectangle(j, i + 1) = h
Else
If alpha < 90 Then
alpha1 = alpha
ElseIf alpha < 180 Then
alpha1 = 180 - alpha
End If
Halpha = b * Sin(alpha1 * Pi / 180) + h * Cos(alpha1 * Pi / 180)
yF = Tan(alpha1 * Pi / 180) * b / 2 - h / 2 + (Halpha / (NbrCoupure - 1) * (j - 1)) * Cos(alpha1 * Pi / 180) - Tan(alpha1 * Pi / 180) * (b / 2 - (Halpha / (NbrCoupure - 1) * (j - 1)) * Sin(alpha1 * Pi / 180))
xG = Cos(alpha1 * Pi / 180) / Tan(alpha1 * Pi / 180) * (Halpha / (NbrCoupure - 1) * (j - 1)) - b / 2 + ((Halpha / (NbrCoupure - 1)) * (j - 1)) * Sin(alpha1 * Pi / 180)
yI = Tan(alpha1 * Pi / 180) * (-b / 2) - h / 2 + (Halpha / (NbrCoupure - 1) * (j - 1)) * Cos(alpha1 * Pi / 180) - Tan(alpha1 * Pi / 180) * (b / 2 - (Halpha / (NbrCoupure - 1) * (j - 1)) * Sin(alpha1 * Pi / 180))
xH = 1 / Tan(alpha1 * Pi / 180) * (-h + (Halpha / (NbrCoupure - 1) * (j - 1)) * Cos(alpha1 * Pi / 180)) - b / 2 + ((Halpha / (NbrCoupure - 1)) * (j - 1)) * Sin(alpha1 * Pi / 180)
If (Halpha / (NbrCoupure - 1)) * (j - 1) <= b * Sin(alpha1 * Pi / 180) Then
bCoupure = ((b / 2) - xG) / (Cos(alpha1 * Pi / 180))
ElseIf (Halpha / (NbrCoupure - 1)) * (j - 1) <= h * Cos(alpha1 * Pi / 180) Then
bCoupure = b / Cos(alpha1 * Pi / 180)
Else
bCoupure = ((h / 2) - yI) / (Sin(alpha1 * Pi / 180))
End If
mtxRectangle(j, i + 1) = bCoupure
End If
Next
Next
Rectangle = mtxRectangle
End Function][/code]
Pouvez vous m'aider a régler ce soucis?