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

SERIEUXETCOOL 336 Messages postés dimanche 3 avril 2011Date d'inscription 12 juin 2012 Dernière intervention - 12 oct. 2011 à 17:00 - Dernière réponse : SERIEUXETCOOL 336 Messages postés dimanche 3 avril 2011Date d'inscription 12 juin 2012 Dernière intervention
- 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
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 oct. 2011 à 17:43
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 oct. 2011 à 17:57
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 oct. 2011 à 18:02
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Jack
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 oct. 2011 à 18:00
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
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 oct. 2011 à 18:03
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 oct. 2011 à 18:07
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 oct. 2011 à 18:32
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
SERIEUXETCOOL 336 Messages postés dimanche 3 avril 2011Date d'inscription 12 juin 2012 Dernière intervention - 12 oct. 2011 à 20:28
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 oct. 2011 à 20:32
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
SERIEUXETCOOL 336 Messages postés dimanche 3 avril 2011Date d'inscription 12 juin 2012 Dernière intervention - 12 oct. 2011 à 23:06
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.