Groupe de fonctions personnelles

Comment créer un groupe de fonctions personnelles ?

Attribute VB_Name = "CreerGroupeFonctionsPersos"
Créer un nouveau groupe de fonctions par macro à l'ouverture d'un classeur ou d'une macro complémentaire: (Laurent Longre, mpfe) Lire les commentaires en fin de module
Dans un module standard (fonctions de test) :

Function HYPOTENUSE(Cote1 As Double, Cote2 As Double)
HYPOTENUSE = Sqr(Cote1 ^ 2 + Cote2 ^ 2)
End Function
Function MOYPOND(Valeurs, Coeffs) As Double
With Application
MOYPOND = .SumProduct(Valeurs, Coeffs) _
/ .SumIf(Valeurs, "", Coeffs)
End With
End Function

Dans le module ThisWorkbook :


Private Const NomCat As String = "Nouvelles fonctions" Option Base 1 Private sub Workbook_Open()

Dim I As Integer, LCat As Integer
Dim Cat As String
Dim NomFct, DescFct
Dim Addin As Boolean, FMasquée As Boolean

On Error GoTo Fin
Application.EnableCancelKey = xlErrorHandler

NomFct = Array("HYPOTENUSE", "MOYPOND")
DescFct = Array("Calcule la longueur de l'hypoténuse", _
"Calcule une moyenne pondérée")

Addin = Me.IsAddin
If Addin Then
Application.ScreenUpdating = False
Me.IsAddin = False
End If
FMasquée = Not Me.Windows(1).Visible
If FMasquée Then
Application.ScreenUpdating = False
Me.Windows(1).Visible = True
End If

LCat = 14
Do
LCat = LCat + 1
Application.ExecuteExcel4Macro _
"DEFINE.NAME(""Djzh" & LCat & """,0,2,,," & LCat & ")"
Cat = Names("Djzh" & LCat).Category
Loop While Cat "User Defined" And Cat NomCat

If Cat = "User Defined" Then _
Application.ExecuteExcel4Macro _
"DEFINE.NAME(""Djzh" & LCat & """,0,2,,,""" & NomCat & """)"

For I = 1 To UBound(NomFct)
Application.MacroOptions Macro:=NomFct(I), _
Description:=DescFct(I), Category:=LCat
Next I

For I = 15 To LCat
Application.ExecuteExcel4Macro "DELETE.NAME(""Djzh" & I & """)"
Next I

Fin:
If Addin Then Me.IsAddin = True
If FMasquée Then Me.Windows(1).Visible = False
ThisWorkbook.Saved = True

end sub

Commentaires HYPOTENUSE et MOYPOND sont placées dans le nouveau groupe "Nouvelles Fonctions ", automatiquement détruit à la fermeture du classeur. Pour" changer le nom de cette catégorie, les noms des fonctions à inclure et leur description, il faut modifier respectivement le contenu des constantes et variables NomCat, NomFct et DescFct. Cette méthode fonctionne dans les macros complémentaires XLA et dans le classeur Perso.xls sous Excel 97 et 2000 (avec les versions antérieures, je ne sais pas). Elle ne marche pas bien quand l'Utilitaire d'Analyse est chargé, à cause d'une anomalie (très énervante) dans la manière dont cet utilitaire gère les catégories de fonctions. l'exemple ci-dessus est dans une macro Fonctions.xla à télécharger sur http://longre.free.fr/downloads/Fonctions.zip Cette macro doit être chargée par Outils -> Macros complémentaires.

Auteur(s) : 

Ce mois-ci sur Excelabo

- Pas de nouvelle page.
- 2 pages modifiées.