Thursday, December 18, 2014

sub et function

Les subs (mot clef: SUB) et les functions (mot clef: FUNCTION)

La différence entre un sub et une function
Le sub (sous programme) ne retourne pas de valeur
La function (fonction) retourne une valeur, un ensemble de valeur identique (array) ou une structure de valeurs

À l'intérieur de la function, cette valeur est contenue dans une variable qui a le même nom que la function
Quand la valeur est retournée au sub qui l'a appelée, elle est injectée dans la variable qui a servi à appeler la function

Exemple:
sub programmeprincipal
    '=== ici on apelle la function "calculatethis" en lui envoyant deux valeur à calculer
    valeur01 = calculatethis(5,20)
    msgbox(valeur01)
end sub

function calculatethis(valeur10, valeur20)
    '=== calculatethis est la valeur retournée au sub car elle a le même nom que la function
    calculatethis = valeur10 + valeur20
end function

Le programme principal est toujours un sub (de préférence)

Le sub apparait dans la liste des programme macros à exécuter si dans excel, on appuie ALT F8
Le function n'apparait pas, car ce sont les sub qui utilisent les functions, pas l'utilisateur humain

Donc faire des function pour tous les traitements à faire que l'usager n'a pas besoin de faire directement est une bonne méthode pour garder le menu ALT F8 "propre" (dans excel vba)

Excel traite séquentiellement les instructions du sub, et quand il atteint end sub, il a terminé
Il ne va pas traiter la function, parce qu'il sait que celle-ci sera appelé par le sub

Les instruments de base de la programmation sont bien sûr les variables (algèbre), mais aussi variables en tableau (array) et les boucles

Le tableau 1 dimension est un groupe de variables séquentiel

Exemple:
sub programmeprincipal
    '=== array01 est un groupe de valeurs qui contient deux valeurs
    array01 = array(5, 20)
    valeur01 = calculatethis(array01)
    msgbox(valeur01)
end sub

function calculatethis(array10)
    for each element01 in array10
        calculatethiscalculatethis+ element01
    next
end function

"For each" va boucler jusqu'à ce que chaque valeur dans le tableau ait été traitée
Chaque valeur sera déposée dans "element01" à chaque itération de la boucle
La boucle se répétera tant qu'il y a des valeurs dans "array10"


No comments:

Post a Comment