[VBA]Appel d'une fonction

senoritalolotte Messages postés 6 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 29 mai 2012 - 28 mai 2012 à 23:35
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 29 mai 2012 à 08:21
Bonsoir à tous,

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...

Merci d'avance.

6 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 mai 2012 à 23:49
Bonjour,

Retour=MaFonction(Parametre1, Parametre2, ...)

Comme tu appelles Inputbox en fait.

---------------------------------------------------------------------
[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
0
senoritalolotte Messages postés 6 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 29 mai 2012
28 mai 2012 à 23:58
Merci bcp ! Je suis désolée pour le doublon, ce n'est pas le même problème...
0
senoritalolotte Messages postés 6 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 29 mai 2012
29 mai 2012 à 00:05
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
0
DevLama Messages postés 356 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 18 novembre 2021 10
29 mai 2012 à 01:43
Dans chaque paramètre tu dois definir comment sera utilisé la Variable
Public Function func(Byval a As Integer,ByVal b as string) As Boolean

'Tu mets tes instructions
End Function

La Science est Grande et Vaste partageons cette connaisance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mai 2012 à 07:43
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mai 2012 à 08:21
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
0
Rejoignez-nous