Je suis étudiante et débutante en language VBA. Pourriez m'indiquez, s'il vous plait, comment appeler la fonction que j'ai créé dans le cas suivant :
Function livret (m As Double, i As Double, n As Integer) As Double
Dim k As Integer, res As Double
res = m
For k = 1 To n
res = res * (1 + i)
Next k
livret = res
End Function
Sub Test ()
Dim i as double
Dim n as integer
Dim m as double
i = InputBox (“Veuillez entrez le taux d’intérêt”)
n = InputBox (“Veuillez entrer le nombre d’années”)
m = InputBox (“Veuillez entrer le montant”)
...
End Sub
Il me manque une dernière ligne dans ma macro "Test", je dois afficher le résultat de la fonction, comment appeler cette fonction,lorsque que j'indique MsgBox ("Utilite), ça ne fonctionne pas...
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
ERREUR : Type d'argument ByRef incomptabile.
Sachant que a,b,c sont des nombres positifs ou nuls (mais potentiellement pas entiers).
Pourriez-vous m'aider svp, d'où vient le problème ?
Merci d'avance.
Function Utilite(a As Double, b As Double, c As Double, X As Double, Y As Double) As Double
a = InputBox("Veuillez entrez la valeur de a")
b = InputBox("Veuillez entrez la valeur de b")
c = InputBox("Veuillez entrez la valeur de c")
X = InputBox("Veuillez entrez la valeur de X")
Y = InputBox("Veuillez entrez la valeur de Y")
Utilite = (a * X ^ b * Y ^ c)
End Function
Sub test()
MsgBox (Utilite(a, b, c, X, Y))
End Sub
Bonjour,
Comment peux-tu penser, à la fois, à passer des paramètres à une fonction et y définir ces paramètres ?
Si tu écris :
Function Utilite(a As Double, b As Double, c As Double, X As Double, Y As Double) As Double
c'est que les paramètres a, b, c, X et Y, passés à la fonctions, sont déjà des doubles et qu'ils ont déjà une valeur.
Reste qu'il t'appartient de définir (en amont de la fonction, donc) a, b,c,X et Y. Ils doivent nécessairement être des doubles valides.
Or, prenons par exemple ce que tu écris dans ton tout premier message,. Cette ligne, par exemple et entre autres :
Dim i as double
i InputBox ("Veuillez entrez le taux d'intérêt")
>> imaginons maintenant que l'on veuille y saisir la valeur 1,1 === >>
si l'on saisit "1,1", reconnue comme "numérique" par VBA, elle ne sera pas un double acceptable. Le serait la valeur 1.1 (saisie en "1.1"), mais qui, elle, ne serait pas reconnue comme un "numérique" par l'inputbox.
La solution : utilisation de la fonction de conversion Cdbl . Ouvre ton aide VBA sur ce mot
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Regarde par exemple comment réagit ceci, que l'utilisateur utilise la virgule ou le point comme séparateur décimal :
Private Sub CommandButton1_Click()
Dim a As Double
a = CDbl(Replace(InputBox("entrez a"), ".", ","))
MsgBox b(a)
End Sub
Private Function b(a As Double) As Double
b = a * 1.1
End Function
Ceci étant dit : j'utiliserais à ta place Application.Inputbox (à voir dans ton aide VBA) plutôt que InputBox. Cela te permettrait de forcer l'utilisateur à frapper un "numérique" valise.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ