Fonction Personnalisée sous EXCEL

Transcription

Fonction Personnalisée sous EXCEL
Tableur
Fonction Personnalisée sous EXCEL
Les fonctions sont des unités de programme qui retournent un résultat.
Function Nom-de-la-fonction ( [liste des paramètres] ) Type du résultat
Instructions
Sortie immédiate, éventuellement, [Exit Function]
Nom-de-la-fonction = valeur
End Function
Une fonction renvoie la valeur d'une variable dont vous devez définir le type.
Le résultat doit être affecté au nom de la fonction pour être exploitable dans
la procédure appelante.
Dans une entreprise, le calcul de la commission des commerciaux est progressive lorsque le produit
est en promotion.
La règle est la suivante :
Si le montant des ventes est inférieur ou égal à 2000 € HT, le taux appliqué est de 6%, sur les 900 €
HT suivant , le taux sera de 6,5%, sur les 900 € HT suivant, le taux sera de 7%, au de là il sera de
7,5%.
L’arbre de calcul de la commission progressive (COMPROG) est très simple. Par contre la règle de
gestion est complexe.
COM PROG
V entes
Début
Si Ventes <=2000 :Alors
COMPROG ← Ventes * 6%
Sinon Si Ventes < 2900 : Alors
COMPROG ← 2000 * 6% + (Ventes-2000) * 6.5%
Sinon Si Ventes < 3800 : COMPROG ← 2000 * 6% + (2900-2000) * 6.5% + (Ventes-2900) * 7% Alors
Sinon: COMPROG ← 2000 * 6% + (2900-2000) * 6.5% + (3800-2900) * 7% + (Ventes-3800) * 7.5%
Fin Si
FinSi
FinSi
Fin
En l’implantant en tant que formule Excel, on obtient :
=SI(ESTVIDE(Produits);"";SI(Taux="progressive"; SI(Ventes>3800;(((Ventes-3800)*7,5%) + (900*7%)
+ (900*6,5%) + (2000*6%)); SI(Ventes>2900;(((Produits-2900)*7%) + (900*6,5%) + (2000*6%));
SI(Ventes>2000;(((Ventes-2000)*6,5%) + (2000*6%)); SI(Ventes<=2000;Ventes*6%))));""))
Dans la formule précédente, la partie surlignée correspond au calcul de la commission progressive.
Elle peut avantageusement être remplacée par l’appel à une fonction qui permettra de simplifier
l’écriture.
=SI(ESTVIDE(Produits);"";SI(Taux="progressive"; COMPROG(Ventes) ;""))
On essaiera donc d’écrire des formules simples dans Excel. Les calculs complexes seront traités par
des fonctions qui renverront la valeur souhaitée.
Jacques Chambon
1/6
Tableur
Le calcul de la commission progressive est réalisé par une fonction appelée COMPROG.
Nom de la fonction Paramètres entre parenthèses
COMPROG (C9)
COM P ROG
Ventes
Il est important de remarquer
que le nom de la fonction
sera donné par la racine de
l’arbre .
Les données fournissent les
paramètres
Ecriture d’une Fonction personnalisée
Une fonction personnalisée va être écrite sous forme textuelle, dans l’environnement VBA d’Excel.
Cette nouvelle fenêtre est appelée à partir de la feuille de travail Excel, en appuyant simultanément
sur les touches Alt + F11.
La fenêtre de Visual Basic est découpée en 4 fenêtres :
Le projet qui donne la liste de tous les feuilles ouvertes dans Excel
La fenêtre des propriétés qui donne des informations sur l’objet sélectionné.
La fenêtre d’exécution qui permet de visualiser les valeurs des variables utilisées par
un programme.
La fenêtre de code qui permet de frapper les instructions des programmes. Si
cette partie de l’écran est grise, appuyer sur la touche F7.
Pour être accessible à partir de n’importe qu ‘elle feuille du classeur Excel, il vous faut créer un
module.
Jacques Chambon
2/6
Tableur
Insertion d’un module
Pour changer le nom
d’un module, il faut
changer la propriété
« name »
de
l’objet
« Module1 »
Appelez le « Fonctions »
Vous allez maintenant définir des fonctions dans ce module.
Création d’une fonction
Une Fonction fait partie des procédures.
Il faut donner son nom (sans espaces),
sélectionner le bouton « Function » et
valider en cliquant sur OK.
Vous obtenez alors l’espace de travail
suivant.
Jacques Chambon
3/6
Tableur
L’algorithme à traduire en Visual Basic est le suivant :
Si VENTES < 2000 Alors
COMPROG1  VENTES * 0.06
Sinon Si VENTES < 2900 Alors
COMPROG1  2000 * 0.06 + (VENTES - 2000) * 0.065
Sinon Si VENTES < 3800 Alors
COMPROG1  2000 * 0.06 + (2900 - 2000) * 0.065 + (VENTES - 2900) * 0.07
Sinon
COMPROG1  2000 * 0.06 + (2900 - 2000) * 0.065 + (3800 - 2900) * 0.07 +
(VENTES - 3800) * 0.075
Fin Si
FinSi
Fin Si
Il va falloir traduire cette algorithme en un ensemble d’instructions Visual Basic, que seules peut
comprendre Excel. Ces instructions en anglais, respectent une syntaxe particulière.
La structure conditionnelle en VBA supporte quatre syntaxes :
Syntaxe 1 : une seule ligne
Syntaxe 2 :
If condition Then
Instructions
If condition Then, InstructionsVrai
End If
Syntaxe3
If condition Then
Instructions
Else
Instructions
End If
Syntaxe 4 :
If condition1 Then
Instructions1
Elseif condition2 Then
Instructions2
Else
InstructionsAutres
End If
En utilisant la syntaxe4 du si alors sinon, nous obtenons l’écriture suivante (cette forme permet
d’éviter les End If). Il faut remarquer que le programmeur a trouvé plus judicieux de remplacer le
termes VENTES par CA. La signification est identique, mais CA fait 2 caractères, alors que Ventes en
fait 6 (fainéantise quand tu nous tiens !!!)
Il ne reste plus qu’à écrire les lignes précédentes entre les mots-clés Function et End Function de la
fenêtre CODE. Il ne faut pas oublier de faire apparaître le nom de la donnée entre les parenthèses
suivant le nom de la fonction.
Il est important de noter que le nom de la variable qui reçoit le résultat du calcul est identique
au nom de la fonction. Si vous ne respectez pas cette règle, vous ne récupèrerez pas de valeur
dans la feuille de calcul.
Vous remarquerez que les mots clés apparaissent automatiquement en bleu et les commentaires,
toujours importants, apparaissent en vert. Un commentaire commence toujours par une apostrophe.
Jacques Chambon
4/6
Tableur
N’oubliez pas d’enregistrer le code que vous venez de taper.
Utilisation de la fonction
La fonction va pouvoir alors être utilisée au
travers de l’icône
.
Comme pour une fonction intégrée, il faut se
placer sur la cellule qui doit contenir la formule et
cliquez sur l’icône.
C’est dans la catégorie
« Personnalisées » que vous
allez trouver la Fonction
COMPROG
Il ne vous reste plus qu’à
sélectionner
la
cellule
contenant la donnée du CA
et le résultat apparaît.
Recopiez la formule vers la
bas et le tour est joué.
Vous venez d’écrire une
fonction qui n’existait pas
dans Excel.
Jacques Chambon
5/6
Tableur
Attention aux erreurs !
Une erreur peut être signalée au moment de la frappe d’une ligne de programme :
Une erreur de syntaxe est signalée
en rouge.
Si vous ne trouvez pas l’erreur
signalée, utilisez l’aide en ligne :
elle fournit toujours des exemples.
Ou ne l’être qu’au moment de l’exécution :
Dans cet exemple le message
d’erreur est explicite, il manque le
End If.
Le sur lignage jaune fluo indique que le
programme est bloqué.
Un programme bloqué ne peut plus être utilisé.
La correction de l’erreur ne suffit pas à
débloquer la situation.
Il faut réinitialiser la Fonction en cliquant sur
l’icône
.
Attention : une fois le programme réinitialisé, la correction que
vous avez apportée n’est pas prise en compte dans la feuille de
calcul Excel. Recopiez une cellule contenant la fonction pour
obliger le tableur à la recalculer !
Utilisez la poignée de recopie !
Jacques Chambon
6/6