Création de ses propres fonctions

Quand une procédure commence par Sub, c'est une simple procédure, mais quand on remplace Procedure par Function, il s'agit alors d'une fonction qui se rajoute dans la liste des fonctions intégrées d'Excel.

Par exemple, imaginons une fonction qui calcule la surface d'un rectangle si on lui donne comme paramètre la longueur et la largeur, de manière à ce qu'on puisse l'appeler de cette manière :

=SurfaceRectangle(4; 6)

Le résultat affiché doit donc être 24. Marche à suivre :

1. Allez dans Outils/Macros/Visual Basic Editor

2. écrivez le code suivant :
Function SurfaceRectangle (Longueur, Largeur)
  SurfaceRectangle = Longueur * Largeur
End Function

3. Quittez Visual Basic, revenez dans Excel

4. Faites Insertion/Fonction, et recherchez SurfaceRectangle. Ecrivez comme Longueur : 5, Largeur : 6, et OK

Le résultat doit bien être 30, et la cellule dans laquelle vous étiez doit bien afficher =SurfaceRectangle(5; 6)

Vous venez d'enrichir Excel d'une fonction de plus. Cette fonction, tout comme les procédures peut-être stockée à différents endroits. Pourquoi pas l'isntaller dans un fichier Macro Complémentaire ?

Création de ses propres fonctions dans une macro complémentaire

Si vous ne savez pas ce qu'est une macro complémentaire, cliquez ici

Nous allons Créer la fonction SurfaceRectangle, dans un module installé dans un fichier Macro complémentaire XLA appelé MesFonctions.XLA, (Mes fonctions personnelles) installé dans le dossier de démarrage d'Excel. Marche à suivre :

1. Demandez un nouveau classeur Excel

2. Fichier/Propriétés : Titre : Mes fonctions personnelles. Commentaires : Liste des fonctions que j'ai créé moi-même

3. Fichier/Enregistrer sous : MesFonctions. Type de fichier : Macro complémentaire Microsoft Excel (*.xla) (Constatez qu'il va spontanément se placer dans le dossier de démarrage automatique des macros complémentaires), et OK

Constatez que dans la barre de titre, il s'agit toujours de Classeur1, et pas de MesFonctions. Un fichier.xla ne comporte pas de feuille. C'est vraiment un simple ensemble de fonctions en format binaire. Attention, il y a un petit phénomène : Bien que nous venons de créer MesFonctions.xla, même si nous ne l'avons pas fermé, il n'est pas là... du tout... Pour s'en convaincre, allez dans Outils/Macros/Visual Basic Editor, et dans la partie de gauche, vous ne voyez normalement pas "VBA Project (MesFonctions.xla)". Mais... Quittez VBA, et faites Fichier/Cliquez dans la liste des derniers fichiers sauvegardés sur "MesFonctions.XLA", et maintenant, et seulement maintenant, si vous allez dans Outils/Macros/Visual Basic Editor, vous voyez, sur la gauche : "VBA Project (MesFonctions.xla)".

4. Faites donc Fichier, et dans la liste des derniers fichiers, cliquez sur MesFonctions.XLA (pour le "rouvrir"...)

5. Outils/Macros/Visual Basic Editor

6. Sur la gauche, cliquez avec le bouton droit de la souris sur VBA Project (MesFonctions.xla), et choisissez Insertion/Module

7. Dans ce module, écrivez :
Function SurfaceRectangle (Longueur, Largeur)
  SurfaceRectangle = Longueur * Largeur
End Function

8. Fichier/Enregistrer MesFonctions.XLA. ATTENTION : Si vous vous contentez de fermer Excel en attendant le message "Vous n'avez pas sauvegardé. Voulez-vous enregistrer votre fichier ?", vous allez être déçu, car Excel va simplement se fermer sans vous demander d'enregistrer, et il n'enregistrera PAS votre fonction (C'est comme ça que ça se passe avec les .XLA)

9. Fermez Visual Basic, retournez dans Excel

10. Fermez la feuille Excel, et s'il vous demande d'enregistrer, répondez non (ça n'a plus rien a voir avec le XLA)

Il n'y a plus aucun classeur ouvert, mais MesMacros.XLA est encore là. Si vous retournez maintenant dans Visual Basic, vous allez voir dans la partie de gauche qu'il est encore présent.

11. Quittez Excel, revenez dans Excel

Maintenant, si vous allez dans Visual Basic, MesMacros.XLA a disparu. Pour le faire réapparaître, il faut explicitement l'ouvrir avec le menu Fichier/Ouvrir. Comme c'est fastidieux, nous allons demander à ce qu'il soit ouvert à chaque démarrage d'Excel

12. Outils/Macros Complémentaires, et cochez la case "Mes fonctions personnelles"

Constatez que ce sont les renseignements donnés à l'étape 2 qui apparaissent au lieu du nom du fichier

13. Faites OK

Maintenant, la fonction SurfaceRectangle sera toujours disponible, jusqu'au moment ou vous retournerez dans Outils/Macros Complémentaires pour décocher sa case.

Et voilà. Pour la tester, écrivez dans n'importe quelle cellule : =SurfaceRectangle(8; 4), vous devriez voir 32

ATTENTION : Comme il s'agit d'une fonction dans un fichier séparé, les feuilles de calculs les utilisant ne fonctionneront que chez vous. Si vous envoyez un classeur avec cette fonction à quelqu'un d'autre, il faudra également lui envoyer MesFonctions.XLA, qu'il l'installe dans son dossier de démarrage des XLA, et qu'il l'active avec Outils/Macros Complémentaires.