Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Type d'argument ByRef incompatible

  • Initiateur de la discussion Initiateur de la discussion Etudiant en galère
  • 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 !

E

Etudiant en galère

Guest
Je rencontre un petit problème avec VBA et Excel
J'ai créer un boutton sous excel et il faut une macro pour le faire marcher.
J'ai donc introduit ma fonction dans ma macro
Le problème est que si je met des paramètre variable que je défini dans ma macro j'ai le message d'erreur Type d'argument ByRef incompatible.

Sub Option_Achat()

If zonelist1 = 'CARREFOUR' Then
K = 25
If zonelist2 = 'Moyenne Journalière' Then
S = Feuil1!B261
ElseIf zonelist2 = 'Moyenne Mensuelle' Then
S = Feuil1!B262
Else
S = Feuil1!B263
End If
End If

If zonelist1 = 'TOTAL' Then
K = 35
If zonelist2 = 'Moyenne Journalière' Then
S = Feuil1!C261
ElseIf zonelist2 = 'Moyenne Mensuelle' Then
S = Feuil1!C262
Else
S = Feuil1!C263
End If
End If
MsgBox 'La valeur du Call Asiatique avec la méthode d'évaluation de Black & Scholes est : ' & Call_BS(S, 0.1, 0.1, 0.5, K)
End Sub

Si quelqu'un peut m'aider ce serait super sympa....

Merci d'avance...
 
Salut

Je ne suis pas certain, j'ai travaillé ca à l'aveugle et te le livre tel quel...

Sub Option_Achat()

If zonelist1 = 'CARREFOUR' Then
K = 25
If zonelist2 = 'Moyenne Journalière' Then
S = worksheets('Feuil1').range('B261')
ElseIf zonelist2 = 'Moyenne Mensuelle' Then
S = worksheets('Feuil1').range('B262')
Else
S = worksheets('Feuil1').range('B263')
End If
elseIf zonelist1 = 'TOTAL' Then
K = 35
If zonelist2 = 'Moyenne Journalière' Then
S = worksheets('Feuil1').range('c261')
ElseIf zonelist2 = 'Moyenne Mensuelle' Then
S = worksheets('Feuil1').range('c262')
Else
S = worksheets('Feuil1').range('c263')
End If
End If
MsgBox 'La valeur du Call Asiatique avec la méthode d'évaluation de Black & Scholes est : ' & S &' 0.1,0.1,0.5 '& K
End Sub

Je n'ai pas compris l'affichage de la msgbox mais si le reste fonctionne tu arriveras certainement a rectifier de toi-même

Ya'v
 
Voilà la procédure B&S

Function Call_BS(S As Double, R As Double, Sig As Double, T As Single, K As Double)
d1 = (Log(S / K) + (R + Sig ^ 2 / 2) * T) / (Sig * T ^ (1 / 2))
d2 = d1 - (Sig * T ^ (1 / 2))
Call_BS = S * WorksheetFunction.NormSDist(d1) - K * Exp(-R * T) * WorksheetFunction.NormSDist(d2)
End Function
 
bonjour

as tu déclaré les variables K et S ?


Sub Option_Achat()
Dim K As Double, S As Double

If zonelist1 = 'CARREFOUR' Then
K = 25
'
'...
'


cet exemple simplifié fonctionne chez moi

Sub Option_Achat()
Dim K As Double, S As Double

K = 35
S = 43

MsgBox Call_BS(S, 0.1, 0.1, 0.5, K)
End Sub

Function Call_BS(S As Double, R As Double, Sig As Double, T As Single, K As Double)
Dim d1, d2
d1 = (Log(S / K) + (R + Sig ^ 2 / 2) * T) / (Sig * T ^ (1 / 2))
d2 = d1 - (Sig * T ^ (1 / 2))
Call_BS = S * WorksheetFunction.NormSDist(d1) - K * Exp(-R * T) * WorksheetFunction.NormSDist(d2)
End Function


bonne journée
MichelXld


ps
Hervé tu m'envoie un MP si tu veux passer cette semaine .N'oublie pas les bieres...;o)
 
Merci pour ton aide MichelXld...

En fait maintenant je rencontre un nouveau problème...

Comme vous avez pu le comprendre j'ai une zonelist sur ma feuille excel...

If zonelist1 = 'CARREFOUR' n'est pas reconnu

dans la fonction précédente...
 
Voilà ce que j'ai essayer

Sub Essai()
If Sheets('Feuil2').zonedeliste1 = 'TOTAL' Then
MsgBox 'OK'
Else
MsgBox 'No'
End If
End Sub


avec zonelist ou zonedeliste parce que je sais pas exactement quelle est la référence

et il me met erreur d'execution '9'
 
J'ai une zone de liste de la barre formulaire (listboxes)

J'ai des éléments dans cette liste (Carrefour, Total,...)

Dans le programme que je projette de faire, je voudrais que l'utilisateur choisisse dans la liste la valeur qu'il veut

En fonction de cette valeur il y a un S et un K donné

Mon problème est de spécifier l'élément sélectionné de la zone de liste sachant que cette zone de liste est dans la feuille 2

le code devrait ressembler à :

Sheets('Feuil2').listboxes(1).value = 1 par exemple pour l'élément 1 de la zone de liste

Mais ça marche pas...
 
rebonjour

il est préférable d'utiliser les objets de la boite à outils controles qui offrent plus de possibilité



néanmoins pour recuperer la valeur selectionnée dans une listbox de la barre d'outils formulaire :

Sub test()
MsgBox Sheets('Feuil2').Shapes('Zone de liste 1').ControlFormat. _
List(Sheets('Feuil2').Shapes('Zone de liste 1').ControlFormat.ListIndex)
End Sub



bonne journée
MichelXld
 
- 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.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…