fonction excel dans une macro

  • Initiateur de la discussion Initiateur de la discussion keaunnynn
  • 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 !

K

keaunnynn

Guest
Bonjour,

J'essaye de faire cette macro, mais apparement il ne reconnait pas la fonction d'excel que j'ai introduite...

Sub puissance()
For n = 1 To 300
For i = 1 To 300
If loi.binomiale(i, n, 0.333, vrai) > 0.05 Then
Cells(n, 12).Value = loi.binomiale(i, n, 0.25, vrai)
n = n + 1
End If
Next i
Next n
End Sub

Est ce possible de faire ce que je voudrai ainsi? est ce juste une erreur de syntaxe? Il me dit "Erreur d'exécution '424'; Objet requis" mais il ne veut pas m'afficher l'aide...

Est ce que qqn pourrai m'aider?
Merci beaucoup beaucoup 🙂
 
Re : fonction excel dans une macro

😕 et je mets ça où? juste à la place de

loi.binomiale(i, n, 0.333, vrai) > 0.05 Then ?

parce que si je fais ça ensuite c'est erreur '438': propriété ou methode non gérée par cet objet

je suis vraiment désolé mais je suis vraiment pas douée :S
 
Dernière modification par un modérateur:
Re : fonction excel dans une macro

Re

oups excuse il fallait traduire en anglais la fonction

cela devrait donner

Sub puissance()
dim n as integer, i as integer
For n = 1 To 300
For i = 1 To 300
If Application.WorksheetFunction.BinomDist(i, n, 0.333, vrai) > 0.05 Then
Cells(n, 12).Value = Application.WorksheetFunction.BinomDist(i, n, 0.25, vrai)
n = n + 1
End If
Next i
Next n
End Sub
 
Re : fonction excel dans une macro

😕 à quoi sert dim n as integer, i as integer ?

et alors là il me dit: "Erreur d'exécution '1004': Impossible de lire la propriété Binomdist de la classe WorksheetFunction"

Mais il commence à faire la macro car il m'a affiché deux valeurs donc ça doit être un pb autre que de la syntaxe... Donc j'ai un peu changé et alors au lieu de juste me donner deux valeurs fausse avant de bugger, il m'en donne deux justes et une fausse... et manque encore 297 valeurs...

Sub puissance()
dim n as integer, i as integer
For n = 2 To 300
For i = 1 To 300
If Application.WorksheetFunction.BinomDist(i, n, 0.333, vrai) > 0.05 Then
Cells(n, 12).Value = Application.WorksheetFunction.BinomDist(i-1, n, 0.25, vrai)
n = n + 1
End If
Next i
Next n
End Sub

Donc peut être qu'il bug parce que binomdist(i,n,p,vrai) avec i>n n'a pas de sens, donc comment pourrait on faire pour qu'il s'arrête une fois que i devient égale à n?

Merci 🙂
 
Re : fonction excel dans une macro

RE

😕 à quoi sert dim n as integer, i as integer ?

C'est une déclaration de variable. Très indiqué. Je t'encourage dans outils Option ssous VBE de cocher declarations de variables obligatoire.

Sinon perso avec la macro que je t'ai donné j'ai rempli 300 lignes

Par contre je ne comprends pas ton n=n+1 en fin de macro
 
Re : fonction excel dans une macro

mouai plein de joli 1! 🙁

je suis allée cocher la case demandée, mais ça ne change rien.

le but de ma macro, enfin le but visé, est de calculer la puissance d'un test où la taille n de l'échantillon change, i est le nombre de succès 0,33 est la probabilité de succès sous l'hypothèse nulle HO et 0,25 avec la probabilité de succès dans l'hypothèse alternative H1. Donc je voudrai qu'il me donne la valeur de la variable binomiale cumulée sous H1 correspondant à la valeur de la variable binomiale cumulée sous H0 qui est juste inférieur à 5% et ça pour chaque taille d'échantillon (variant de 2 individus à 300 individus). Donc il commence par n=2 et i=1 et puis fait augmenter i jusque trouver une valeur de la variable binomiale cumulée sous H0 supérieure à 0.05 et alors il prend la valeur de la variable binomiale sous H1 pour i-1. Et alors dès qu'il a trouvé cette valeur il passe à un échantillon de taille 3 et ainsi de suite.

Et donc le but final de mon exo n'est pas de trouver une suite de 1 mais la valeur de l'échantillon pour laquelle la puissance du test de discrimination des deux hypothèse sera supérieure à 90% avec un seuil alpha de 5%

enfin je suis un peu perdue là parce que je ne comprends vraiment plus ce qui ne va pas 🙁
 
Re : fonction excel dans une macro

keaunnynn à dit:
mouai plein de joli 1! 🙁

je suis allée cocher la case demandée, mais ça ne change rien.

le but de ma macro, enfin le but visé, est de calculer la puissance d'un test où la taille n de l'échantillon change, i est le nombre de succès 0,33 est la probabilité de succès sous l'hypothèse nulle HO et 0,25 avec la probabilité de succès dans l'hypothèse alternative H1. Donc je voudrai qu'il me donne la valeur de la variable binomiale cumulée sous H1 correspondant à la valeur de la variable binomiale cumulée sous H0 qui est juste inférieur à 5% et ça pour chaque taille d'échantillon (variant de 2 individus à 300 individus). Donc il commence par n=2 et i=1 et puis fait augmenter i jusque trouver une valeur de la variable binomiale cumulée sous H0 supérieure à 0.05 et alors il prend la valeur de la variable binomiale sous H1 pour i-1. Et alors dès qu'il a trouvé cette valeur il passe à un échantillon de taille 3 et ainsi de suite.

Et donc le but final de mon exo n'est pas de trouver une suite de 1 mais la valeur de l'échantillon pour laquelle la puissance du test de discrimination des deux hypothèse sera supérieure à 90% avec un seuil alpha de 5%

enfin je suis un peu perdue là parce que je ne comprends vraiment plus ce qui ne va pas 🙁

Excuse moi mais en VBA je comprends à peu près ce que je fais 😉 et je peux chercher comment la fonction loi.binomiale se fabrique en VBA, par contre quand tu rentres dans le rôle de la fonction perso je n'y pige plus rien. Pour moi c'est du chinois
 
Re : fonction excel dans une macro

ok je ne sais pas ce qu ej'ai fait mais mon excel à bugé enfin il a mis plus de 30 sec à réagir et donc moi ça m'a rendue 😡 et donc je l'ai quitté sauvagement et maintenant je ne sais pour quelle raison il me donne 300 valeurs!

mais ça va pas c'est pas ce que je veux il me donne pas la bonne "case".

Sub puissance()
dim n as integer, i as integer
For n = 2 To 300
For i = 1 To 300
If Application.WorksheetFunction.BinomDist(i, n, 0.333, true) > 0.05 Then
Cells(n, 12).Value = Application.WorksheetFunction.BinomDist(i-1, n, 0.25, true)
n = n + 1
End If
Next i
Next n
End Sub

notation: Application.WorksheetFunction.BinomDist(i, n, 0.333, true) = B(i,n,p0)
et Application.WorksheetFunction.BinomDist(i, n, 0.25, true) = B(i,n,p1)


Donc pourriez vous me dire si ma macro me fait bien ce que je voudrai qu'elle fasse, càd fasse varier n de 2 à 300, puis pour chaque valeur de n fait varier i de 1 à 300. Puis si B(i,n,p0) est inférieur à 0,05 il passe au i suivant sans changer n et si B(i,n,p0) est supérieur à 0,05 il me donne la valeur de B(i-1,n,p1) et passe au n suivant en recommençant à i=1 ?

Merci beaucoup
 
- 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

Réponses
8
Affichages
780
Réponses
4
Affichages
733
Réponses
5
Affichages
688
Réponses
9
Affichages
884
Retour