Quel est l'intérêt des procédures Function ?

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

KiWin

Guest
Bonjour,

J'ai bien compris la fonctionnement des procédures Function, mais je n'en vois pas l'intérêt...

Prenons l'exmple fourni ds l'aide VBA de Office XP :

Sub Main()
temp = Application.InputBox(Prompt:= _
"Veuillez entrer la température en degrés F.", Type:=1)
MsgBox "La température équivaut à " & Celsius(temp) & " degrés C."
End Sub

Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function

N'est t'il pas plus simple d'écrire :

Sub Main()
temp = Application.InputBox(Prompt:= _
"Veuillez entrer la température en degrés F.", Type:=1)
Celsius = (temp - 32) * 5 / 9
MsgBox "La température équivaut à " & Celsius(temp) & " degrés C."
End Sub

Qui peut m'expliquer ce qui m'échappe ?? Merci.
 
Bonjour
L'interet des fonctions dans Excel :
- dans les modules VBA il peut être nécessaire de faire plusieurs fois appel au même traitement sur des plages différentes ou des valeurs différentes : au lieu de réécrire sensiblement les même lignes de code, on crée une fonction générique qu'on peut appeler à chaque fois qu'on en a besoin en lui passant en paramêtres les valeurs ou plages à traiter.
De même qu'au long du code on fait appel à des fonctions fournies par Excel, on peut faire appel à nos propres fonctions.

- ces fonctions peuvent aussi servir de fonction personnalisées si elles sont stockées dans une macro complémentaire.

Chris
 
pour s'en tenir à une définition simple, une procédure effectue un traitement (modifier la valeur de cellules, la mise en forme d'une page pour l'impression etc) et une fonction renvoie une valeur (le calcul de Pi, la conversion d'une valeur de degrés celsius en degrés Farenheit dans ton exemple etc).

précision de vocabulaire : une procédure fonction n'existe pas ! c'est l'un, ou l'autre
 
Merci à tous les deux de votre réponse.

Chris, effectivement vu sous cet angle je comprend que ça puisse servir. Y'a t'il d'autres cas de figures ou le recours à un fonction est nécéssaire ?

Ti, je ne veux pas avoir l'air d'en savoir plus que je ne sais, mais les fonctions sont des procédures qui effectuent un traitement et qui peuvent éventuellement renvoyer une valeur, mais "Function" est bien une procédure :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/modcore/html/decontipsfordefiningproceduresinvba.asp
 
Au fait il y a petite erreur, personne ne l'a vue ?? 🙂

Sub Main()
temp = Application.InputBox(Prompt:= _
"Veuillez entrer la température en degrés F.", Type:=1)
Celsius = (temp - 32) * 5 / 9
MsgBox "La température équivaut à " & Celsius(temp) & " degrés C."
End Sub
 
OK je comprends la source de la confusion, c'est vrai que VB parle de Sub au lieu de procédure. Dans d'autres langages (en Delphi par exemple) on parle simplement de procédure ou de fonction et on s'en tient à la définition que je donne plus haut.

Donc je pourrais reformuler ma réponse ainsi :
- Une procédure-Sub effectue un traitement (modifier la valeur de cellules, la mise en forme d'une page pour l'impression etc)

- Une procédure-Function renvoie une valeur (le calcul de Pi, la conversion d'une valeur de degrés celsius en degrés Farenheit dans ton exemple etc).
 
Bonjour à tous,
Tu sais Kiwin, ça dépend.
Pour ma part, j'ai commencé par des cours d'algo afin de comprendre la logique de programmation. Ensuite en passant par vb et delphi, je me sui rendu compte que finalement la logique est la même.
 
- 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

Retour