ArcSinus sous visual basic

  • Initiateur de la discussion Initiateur de la discussion yoyo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

yoyo

Guest
Bonjour,
Je souhaite utiliser la fonction mathématique arcsinus dans une macro excel.
La fonction ASIN() d'une feuille de calcul ne fonctionne pas en visual basic.
Y a t'il une solution pour avoir cette fonction dans ma macro?

D'avance merci pour vos réponses.
 
2 solutions :
Dans une application Office, passe par Worksheetfunction

Function ASin#(Byval N#)
ASin = WorksheetFunction.ASin(N)
End Function


dans un programme VB, tu peux utiliser cette fonction de W. Stucki:

Function ArcSin(X As Double) As Double
' Inverse du Sinus
If X = 1 Then
ArcSin = PI() / 2
ElseIf X = -1 Then
ArcSin = -PI() / 2
Else
ArcSin = Atn(X / Sqr(-X * X + 1))
End If
End Function
 
Re : ArcSinus sous visual basic

Bonjour,
Je programme une petite application en VB6 qui doit calculer à partir de 3 points théorique et 3 points réel la différence, y compris la différence d'angle.

Pour cela j'ai besoin de la fonction SINUS INVERSE le problème quand j'utilise la fonction que tu as donner Ti_ c'est qu'il me met le message d'erreur "Tableau attendu".

EDIT: j'ai remplacer "pi()" par "pi = 3.141592654 '358979" maintenant j'ai "Argument ou appel de la fonction incorrect"
Sur la fonction ArcSin = Atn(X / Sqr(-X * X + 1))
je pense que ça viens de l'importation de la librairie "Maths" ?

Extrait du code :
Code:
Private Sub Main()
Dim sinus1 As Double

valeurX1 = (TextreelX1.Text) - (TexttehoriqueX1.Text)
valeurY1 = (TextreelY1.Text) - (TexttehoriqueY1.Text)
sinus1 = (valeurX1) / (valeurY1)
sinus1 = ArcSin(sinus1)
MsgBox (sinus1)


Désolé de déterrer un sujet d'attends de 2006 mais je n'arrive pas à trouver mon bonheur sur la toile...et la je bloque surement sur une problématique très bête mais qui ne me saute pas aux yeux 😕
 
Dernière édition:
Re : ArcSinus sous visual basic

Bonjour xyam
Essayez ceci :
Code:
[COLOR=DarkSlateGray][B]Function ASN#(x#)
  If Abs(x) = 1 Then ASN = 2 * Sgn(x) * Atn(1) Else ASN = Atn(x / Sqr(-x * x + 1))
End Function[/B][/COLOR]
ROGER2327
#4702


Dimanche 8 Sable 138 (Conception du Père Ubu (AJ), SS)
18 Frimaire An CCXIX
2010-W49-3T13:12:22Z
 
Re : ArcSinus sous visual basic

Suite…
Votre procédure pourrait s'écrire
Code:
[COLOR=DarkSlateGray][B]Private Sub Main()
Dim sinus1#, valeurX1#, valeurY1#
  valeurX1 = CDbl(TextreelX1.Text) - CDbl(TexttehoriqueX1.Text)
  valeurY1 = CDbl(TextreelY1.Text) - CDbl(TexttehoriqueY1.Text)
  sinus1 = valeurX1 / valeurY1
  sinus1 = ASN(sinus1)
  MsgBox sinus1
End Sub[/B][/COLOR]
Mais il y a de nombreuses possibilités de plantage, parmi lesquelles :

  1. Un argument TextreelX1.Text ou TextreelY1.Text n'est pas susceptible d'être converti en nombre.
  2. valeurY1 est nul.
  3. La valeur absolue de valeurX1 / valeurY1 est strictement supérieur à 1.
En sécurisant un peu, on a
Code:
[COLOR=DarkSlateGray][B]Private Sub Main()
Dim sinus1#, valeurX1#, valeurY1#
  On Error Resume Next
  valeurX1 = CDbl(TextreelX1.Text) - CDbl(TexttehoriqueX1.Text)
  valeurY1 = CDbl(TextreelY1.Text) - CDbl(TexttehoriqueY1.Text)
  If Err.Number <> 0 Then MsgBox "Au moins une donnée incorrecte.": Exit Sub
  On Error GoTo 0
  If valeurY1 = 0 Or Abs(valeurY1) > Abs(valeurY1) Then MsgBox "L'arc cherché n'existe pas.": Exit Sub
  sinus1 = valeurX1 / valeurY1
  sinus1 = ASN(sinus1)
  MsgBox sinus1
End Sub[/B][/COLOR]
Il convient évidemment de tester tout cela : en l'absence de support, je n'ai pas pu le faire.
ROGER2327
#4703


Dimanche 8 Sable 138 (Conception du Père Ubu (AJ), SS)
18 Frimaire An CCXIX
2010-W49-3T13:43:47Z
 
Re : ArcSinus sous visual basic

Re…
Je te remercie pour le temps passé, je vais tester tous cela,
bonne journée
Je n'ai pas grand mérite, la formule étant (en principe) connue de tout bachelier tant soit peu scientifique et même de l'aide de VisualBasic. Le seul cas un peu sensible est pour les valeurs 1 et -1, où la fonction n'est pas définie (division par zéro) et qui nécessite un test conditionnel pour renvoyer la valeur π/2 ou -π/2 (valeur obtenue ici par 2 * Sgn(x) * Atn(1)).
Bonne soirée,

ROGER2327
#4720


Lundi 9 Sable 138 (Saint Sagouin, homme d'Etat, SQ)
19 Frimaire An CCXIX
2010-W49-4T17:14:46Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
7
Affichages
411
Réponses
6
Affichages
501
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
163
  • Question Question
Microsoft 365 ScrollArea
Réponses
3
Affichages
413
D
  • Question Question
Réponses
5
Affichages
144
Didierpasdoué
D
Retour