Table des matières
Comme vous savez déjà comment créer des UDF (et, je l'espère, vous avez également essayé de les appliquer dans votre Excel), creusons un peu plus et apprenons comment utiliser et stocker les fonctions définies par l'utilisateur dans Excel.
De plus, nous vous montrerons comment enregistrer facilement vos fonctions dans un fichier Excel add-in pour les utiliser ultérieurement en quelques clics.
Alors, voici de quoi nous allons parler :
Différentes façons d'utiliser les UDF dans Excel
Utilisation des UDF dans les feuilles de calcul
Une fois que vous avez vérifié que vos UDF fonctionnent correctement, vous pouvez les utiliser dans des formules Excel ou dans du code VBA.
Vous pouvez appliquer des fonctions personnalisées dans un classeur Excel de la même manière que vous utilisez des fonctions ordinaires. Par exemple, il suffit d'écrire dans une cellule la formule ci-dessous :
= GetMaxBetween(A1:A6,10,50)
L'UDF peut être utilisé en combinaison avec des fonctions régulières, par exemple pour ajouter du texte à la valeur maximale calculée :
= CONCATENATE("La valeur maximale entre 10 et 50 est ", GetMaxBetween(A1 : A6,10,50))
Vous pouvez voir le résultat dans la capture d'écran ci-dessous :
Vous pouvez trouver le nombre qui est à la fois maximum et qui se situe dans la fourchette de 10 à 50.
Vérifions une autre formule :
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), le
La fonction personnalisée GetMaxBetween vérifie la plage B2:B9 et trouve le nombre maximal entre 10 et 50. Ensuite, en utilisant INDEX + MATCH, nous obtenons le nom du produit qui correspond à cette valeur maximale :
Comme vous pouvez le constater, l'utilisation des fonctions personnalisées n'est pas très différente des fonctions Excel ordinaires.
Lorsque vous effectuez cette opération, n'oubliez pas qu'une fonction définie par l'utilisateur ne peut que renvoyer une valeur, mais ne peut pas effectuer d'autres opérations.
Utilisation de l'UDF dans les procédures et fonctions VBA
Les UDF peuvent également être utilisés dans les macros VBA. Vous pouvez voir ci-dessous le code de la macro qui recherche la valeur maximale dans la plage de 10 à 50 dans la colonne contenant la cellule active.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubLe code de la macro contient la fonction personnalisée
GetMaxBetween(.Cells, 10, 50)
Elle trouve la valeur maximale dans la colonne active. Cette valeur sera alors mise en évidence. Vous pouvez voir le résultat de la macro dans la capture d'écran ci-dessous.
Une fonction personnalisée peut également être utilisée à l'intérieur d'une autre fonction personnalisée. Plus tôt dans notre blog, nous avons examiné le problème de la conversion d'un nombre en texte à l'aide de la fonction personnalisée nommée Numéro d'orthographe .
Avec son aide, nous pouvons obtenir la valeur maximale de la plage et l'écrire immédiatement sous forme de texte.
Pour ce faire, nous allons créer une nouvelle fonction personnalisée dans laquelle nous utiliserons les fonctions GetMaxBetween et Numéro d'orthographe qui nous sont déjà familiers.
Fonction SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionComme vous pouvez le voir, le GetMaxBetween est un argument pour une autre fonction personnalisée, Numéro d'orthographe Il définit la valeur maximale, comme nous l'avons fait à maintes reprises auparavant. Ce nombre est ensuite converti en texte.
Dans la capture d'écran ci-dessus, vous pouvez voir comment l'option SpellGetMaxBetween trouve le nombre maximum entre 100 et 500 et le convertit ensuite en texte.
Appel d'UDF à partir d'autres classeurs
Si vous avez créé des UDF dans votre classeur, cela ne signifie malheureusement pas que vous ne rencontrerez aucun problème.
D'après mon expérience, la plupart des utilisateurs créent tôt ou tard leur collection personnelle de macros et de fonctions personnalisées pour automatiser des processus et des calculs individuels. Et c'est là que le problème se pose - le code des fonctions définies par l'utilisateur en Visual Basic doit être stocké quelque part afin d'être utilisé plus tard dans le travail.
Pour appliquer la fonction personnalisée, le classeur dans lequel vous l'avez enregistrée doit être ouvert dans votre Excel. S'il ne l'est pas, vous obtiendrez l'erreur #NAME ! lorsque vous tenterez de l'utiliser. Cette erreur indique qu'Excel ne connaît pas le nom de la fonction que vous souhaitez utiliser dans la formule.
Voyons comment vous pouvez utiliser les fonctions personnalisées que vous créez.
Méthode 1 : ajouter le nom du classeur à la fonction
Vous pouvez préciser le nom du classeur dans lequel il se trouve avant le nom de la fonction. Par exemple, si vous avez enregistré une fonction personnalisée GetMaxBetween() dans un classeur nommé Mes_fonctions.xlsm vous devez alors entrer la formule suivante :
= Mes_Fonctions.xlsm!GetMaxBetween(A1:A6,10,50)
Méthode 2. Stocker tous les UDF dans un fichier commun
Enregistrez toutes les fonctions personnalisées dans un classeur spécial (par exemple, Mes_fonctions.xlsm ) et copiez la fonction souhaitée dans le classeur actuel, si nécessaire.
Chaque fois que vous créez une nouvelle fonction personnalisée, vous devez dupliquer son code dans le classeur dans lequel vous l'utiliserez. Avec cette méthode, plusieurs inconvénients peuvent survenir :
- S'il y a beaucoup de fichiers de travail, et que la fonction est nécessaire partout, alors le code devra être copié dans chaque livre.
- N'oubliez pas d'enregistrer le classeur dans un format compatible avec les macros (.xlsm ou .xlsb).
- Lors de l'ouverture d'un tel fichier, la protection contre les macros affichera à chaque fois un avertissement qui doit être confirmé. De nombreux utilisateurs prennent peur lorsqu'ils voient une barre jaune d'avertissement qui leur demande d'activer les macros. Pour éviter de voir ce message, vous devez désactiver complètement la protection d'Excel. Cependant, cela n'est pas toujours correct et sûr.
Je pense que vous serez d'accord avec moi pour dire que le fait d'ouvrir tout le temps un fichier et d'en copier le code des fonctions définies par l'utilisateur ou d'écrire le nom de ce fichier dans une formule n'est pas la meilleure solution. nous en sommes donc arrivés à la troisième voie.
Méthode 3 : créer un fichier complémentaire Excel
Je pense que le meilleur moyen est de stocker les fonctions personnalisées fréquemment utilisées dans un fichier d'extension Excel. Avantages de l'utilisation de l'extension :
- Vous ne devez connecter le complément à Excel qu'une seule fois. Ensuite, vous pouvez utiliser ses procédures et fonctions dans n'importe quel fichier sur cet ordinateur. Vous ne devez pas enregistrer vos classeurs aux formats .xlsm et .xlsb puisque le code source ne sera pas stocké dans ces classeurs mais dans le fichier du complément.
- Vous ne serez plus gêné par la protection des macros car les add-ins renvoient toujours à des sources fiables.
- Un add-in est un fichier distinct, qu'il est facile de transférer d'un ordinateur à l'autre ou de partager avec des collègues.
Nous reviendrons plus tard sur la création et l'utilisation d'un add-in.
Utilisation de modules complémentaires pour stocker des fonctions personnalisées
Comment créer mon propre module complémentaire ? Nous allons suivre ce processus étape par étape.
Étape 1 : créer le fichier du module d'extension
Ouvrez Microsoft Excel, créez un nouveau classeur, et enregistrez-le sous un nom approprié (par exemple, Mes_Fonctions) au format add-in. Pour ce faire, utilisez le menu Fichier - Enregistrer sous ou la touche F12. Assurez-vous de spécifier le type de fichier. Add-in Excel :
Votre add-in aura l'extension .xlam.
Conseil : veuillez noter que, par défaut, Excel stocke les add-ins dans le dossier de l'utilisateur. C:\Users\[Your_Name]\AppData\Roaming\Microsoft\AddIns Je vous recommande d'accepter l'emplacement par défaut. Si vous le souhaitez, vous pouvez spécifier n'importe quel autre dossier. Mais alors, lorsque vous connecterez le module complémentaire, vous devrez trouver et spécifier son nouvel emplacement manuellement. Si vous l'enregistrez dans le dossier par défaut, vous ne devez pas chercher le module complémentaire sur votre ordinateur. Excel le répertorie automatiquement.
Etape 2 : Connecter le fichier add-in
Maintenant, le complément que nous avons créé doit être connecté à Excel. Il sera alors chargé automatiquement au démarrage du programme. Pour ce faire, utilisez le menu Fichier - Options - Compléments Assurez-vous Compléments d'Excel est sélectionné dans le Gérer Cliquez sur le champ Allez sur dans le bas de la fenêtre. Dans la fenêtre qui apparaît, marquez notre add-in My_Functions. Si vous ne le voyez pas dans la liste, cliquez sur le bouton Parcourir et naviguez jusqu'à l'emplacement de votre fichier add-in.
Si vous utilisez un add-in pour stocker des fonctions personnalisées, il y a une règle simple à suivre. Si vous transférez le classeur à d'autres personnes, assurez-vous de transférer également une copie de l'add-in qui contient la fonctionnalité que vous voulez. Ils doivent le connecter de la même manière que vous l'avez fait maintenant.
Étape 3 : ajouter des fonctions et des macros personnalisées à l'add-in.
Notre module complémentaire est connecté à Excel, mais il n'a pas encore de fonctionnalité. Pour lui ajouter de nouveaux UDF, ouvrez l'éditeur Visual Basic en appuyant sur Alt + F11 . Ensuite, vous pouvez ajouter de nouveaux modules avec du code VBA comme décrit dans mon tutoriel Créer des UDF.
Sélectionnez votre fichier add-in ( Mes_Finctions.xlam ) dans la fenêtre VBAProject. Utilisez le bouton Insertion - Module pour ajouter un module personnalisé. Vous devez écrire des fonctions personnalisées dans ce module.
Vous pouvez soit taper manuellement le code d'une fonction définie par l'utilisateur, soit le copier depuis un endroit quelconque.
C'est tout. Vous avez maintenant créé votre propre module complémentaire, vous l'avez ajouté à Excel et vous pouvez utiliser l'UDF dans ce module. Si vous voulez utiliser d'autres UDF, il suffit d'écrire le code dans le module complémentaire dans l'éditeur VBA et de l'enregistrer.
C'est tout pour aujourd'hui. Nous avons appris comment utiliser les fonctions définies par l'utilisateur dans votre classeur. Nous espérons vraiment que ces directives vous seront utiles. Si vous avez des questions, écrivez dans les commentaires de cet article.