[Catégorie modifiée VB6 -> VBA] Trigonométrie, Cosinus moins 1 et Arc cosinus so [Résolu]

Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Dernière intervention
12 juin 2012
- - Dernière réponse : SERIEUXETCOOL
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Dernière intervention
12 juin 2012
- 12 oct. 2011 à 23:06
Encore une fois dsl si je post au mauvais endroit. Pourtant j'ai bien pris mon temps et je ne vois pas de meilleure catégorie que "Visual Basic 6". Bref dsl si je suis à coté.

De nouveau bonjour au personnes se trouvant connectées au Forum...

Je viens de me poser une petite question qui reste sans réponse. Et je n'aime pas sa^^

J'ai reçu un fichier Excel qui contient toute une colonne remplie par une formule.

Voici la formule :

=(K8^2/(3,14159265358979*FORMULAIRE!E5*1000000))*(((C11^2/K8^2)-1)^0,5-(2-(C11^2/K8^2))*ACOS(K8/C11))


La formule est un peu longue et sans intérêt pour le moment. La partie qui m'intrigue est la suivante (Fin de la formule) :

...*ACOS(K8/C11))


Voila mes questions maintenant :

-J'ai retrouvé la formule dans un bouquin et c'est écrit "Cos-1" (Le moins un est en indice bien sur). Du coup c'est un Arc Cosinus qu'il faut lire ou pas du tout ? Mes cours de maths ne sont pas si loin que sa, mais j'ai un doute tout de même.

-Du coup si je ne me trompe pas, la formule doit faire appel à un "Cos-1" autrement dit un "Arc Cosinus". J'ai cherché sur le net comment appeler en vba la fonction "Arc Cosinus" et à priori cette fonction n'existe pas de base. Il faut en créer une avec la définition de la fonction mathématique "Arc Cosinus".
Ben alors que viens faire ce "ACOS(K8/C11)" dans la formule ??? J'ai bien cherché dans le code vba du fichier Excel et il n'y a a pas de fonction en rapport avec le cosinus. La formule est elle juste alors ???


Merci à ceux qui pourront éclairer un peu mes lanternes sur la fonction "Arc Cosinus" et Vba.

Bien cordialement,

André
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
Pas bonjour non plus

Pour la catégorie, tu aurais pu consulter tes précédents messages pour connaitre le bon endroit.

La symbolisation "Cos -1" veut dire qu'il s'agit de la fonction inverse de COS, soit ACOS.
Cette fonction n'exsite pas toute faite dans VB puisqu'elle peut être recalculée à partir des fonctions de base.
Pour ACos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
comme expliqué dans l'aide de VBA de Excel à la rubrique " Fonctions mathématiques dérivées "

/!\ Les angles sont exprimés en radians (de Pi), pas en degrés

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Bonjour,

Oui, ACOS est bien une fonction de Excel. Oui, elle extrait l'ArcCosinus d'un nombre. Comme en trigo, ce nombre, exprimé en radians, doit être une valeur entre 0 et Pi.

Si ta question est : comment l'exprimer en VBA, la réponse est ainsi :
Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)

où :
Sqr est une fonction extrayant la racine carrée
Atn est une fonction de VBA (revoie l'ArcTangente d'un nombre)
X le nombre dont on veut l'ArcCosinus

Je te rappelle (ou signale) par ailleurs que tu peux toujours appeler, depuis VBA, une fonction de Excel.
Dans ton exemple, ce serait :
WorkSheetFunction.ACOS(Range("K8").Value/Range("C11").Value)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
Pour utiliser une fonction maison dans des formules de cellules, il suffit de déclarer ces fonctions en Public dans un Module, exemple :
Public Function ACos(AngleRadian As Double) As Double
    ACos = Atn((AngleRadian * (-1)) / Sqr((AngleRadian * (-1)) * AngleRadian + 1)) + 2 * Atn(1)
End Function

Merci cs_Jack 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Ah !
Moins rapide que Jack sur ce coup (j'aurais pas du fumer une clope entre temps). pour la partie 1 de mon message.
La partie 2, par contre, reste à mon actif !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
La plus rigolote, c'est que ACOS existe en VBA ?
Je ne le savais pas. Autant pour moi.
(appartient aux macros complémentaires, non ?)
Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Salut jack.
Non Acos n'est pas une fonction VBA mais une fonction de Excel.

Comme toutes les fonctions de Excel, elle peut, depuis VBA, être utilisée indirectement (comme membre de l'objet WorkSheetFunction)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Mais André aurait du le savoir. Si ma mémoire est bonne, en effet, j'ai utilisé ce procédé dans une autre discussion qu'il a ouverte, avec un autre propos.
Il me semble me rappeler que, pour faire une moyenne, j'avais utilisé ainsi la fonction Average :
Woksheetfunction.Average( .... )
Me trompe-je, André ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Dernière intervention
12 juin 2012
0
Merci
Merci pour vos réponses constructives Ucfoutu et Jack. J'en sais maintenant bcp plus sur ce "ACOS".

Effectivement Ucfoutu, par le passé on avais utilisé la fonction "AVERAGE".
Mais le problème reste le même en fait que sa soit "AVERAGE" ou "ACOS".

Je m'explique.

-Si je dois calculer la moyenne d'une plage alors j'utilise "Woksheetfunction.Average(Plage)".

-Si je dois calculer l'Arc Cosinus d'un nombre alors j'utilise "WorkSheetFunction.ACOS(Value)"

Mais maintenant si je dois calculer en une seule ligne une valeur plus une moyenne ? Ou alors une valeur plus un Arc Cosinus ? Ou alors même une valeur plus une moyenne plus un Arc Cosinus ?

Pour moi sa donnerais sa :

-"ValeurA + Woksheetfunction.Average(Plage)"

-"ValeurA + WorkSheetFunction.ACOS(Value)"

-"ValeurA + Woksheetfunction.Average(Plage) + WorkSheetFunction.ACOS(Value)"
"

Mais sa me semble louche comme écriture. Donc mon soucis c'est pas tant de calculer un Arc Cosinus si ce n'est de l’appeler correctement dans une formule^^

Mais a priori Ucfoutu a dit qu'étant donnée que la fonction provient d'Excel, pas besoin de faire une procédure public car Excel comprendra cette formule. Bred c'est pas 100% clair dans ma tête encore.

PS : Sorry pour la catégorie, mais je ne trouve pas "VBA". Suis-je aveugle partiellement ?
Commenter la réponse de SERIEUXETCOOL
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
PS : Sorry pour la catégorie, mais je ne trouve pas "VBA". Suis-je aveugle partiellement ?

Bé ...
regarde mieux (et prends ton temps).
Un indice VBA (Visual Basic for Applications) est un langage dérivé de Visual Basic.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Dernière intervention
12 juin 2012
0
Merci
Merci Ucfoutu.

J'ai trouvé cette fois ci^^. Ma thématique est la suivante "Visual Basic6/Langages dérivés/VBA"

Au moins je saurais ou poster à l'avenir de manière sereine.

Pas facile à trouver du premier coup en tout cas ! Il y a pas mal de catégories tout de même. Néanmoins j'aurais du prendre plus de temps pour analyser la liste.

Mea culpa. C'est chose faite maintenant.

Merci. Au moins Jack n'aura plus à déplacer mes posts à l'avenir. Je progresse Youhouhou !
Commenter la réponse de SERIEUXETCOOL

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.