none
Description des fonctions crees sous VBA dans Excel RRS feed

  • Question

  • Bonjour a tous,

    J'ai cree une fonction VBA a l'aide de l'editeur de macro d'Excel. Jusqu'ici tout va bien, cependant, lorsque je fais appel a ma fonction dans Excel, aucune information sur les arguments de ma fonction n'apparait

    Ce que je voudrais c'est avoir un descriptif de la fonction et de ses arguments comme pour les fonctions implementees par defaut sur Excel...

    Quelqu'un pourrait m'aider?

    Merci

    Francesco

    • Type modifié Ciprian Duduiala lundi 30 mai 2011 07:04 pas de réponse de l'utilisateur qui a lancé la question
    • Type modifié Ciprian Duduiala lundi 30 mai 2011 10:09 solution trouvée
    • Type modifié Ciprian Duduiala lundi 30 mai 2011 10:10 solution trouvée
    lundi 23 mai 2011 12:35

Réponses

  • bonjour Francisco,
     
    mets la macro dans un module du .xla
     
    Sub MaFunctionPersoAide()
    Application.MacroOptions Macro:="NomFonction", Category:=7, _
        Description:="La description de ma fonction complémentaire.", _
        HelpFile:="C:\mon fichier d'aide.CHM", _
        HelpContextID:=4050
    End Sub
     et sur la page ThisWorkbook
     
    Private Sub Workbook_Open()
    MaFunctionPersoAide
    End Sur
     
    --
    isabelle
     
     
    mardi 24 mai 2011 11:41
  • Bonjour,

    Voici un message de Laurent Longre sur le sujet :

    '-------------------------------------------------------------------
    ' =============================================
    ' 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

    ' =============================

    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.

    Si ça t'intéresse, j'ai mis l'exemple ci-dessus 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.
    '-------------------------------------------------------------------

    MichD
    --------------------------------------------
    "Francisco de la Ciudad" a écrit dans le message de groupe de discussion : 743a76ba-fc8e-49f7-8ee8-2f367ef540a7@communitybridge.codeplex.com...

    Bonjour a tous,

    J'ai cree une fonction VBA a l'aide de l'editeur de macro d'Excel. Jusqu'ici tout va bien, cependant, lorsque je fais appel a ma fonction dans Excel, aucune information sur les arguments de ma fonction n'apparait

    Ce que je voudrais c'est avoir un descriptif de la fonction et de ses arguments comme pour les fonctions implementees par defaut sur Excel...

    Quelqu'un pourrait m'aider?

    Merci

    Francesco

    dimanche 29 mai 2011 15:28

Toutes les réponses

  • bonjour Francesco,
     
    regarde la rubrique : IV. Un fichier d'aide pour vos fonctions personnelles
     
    --
    isabelle
     Le 2011-05-23 08:35, Francisco de la Ciudad a écrit :
    > Bonjour a tous,
    >
    > J'ai cree une fonction VBA a l'aide de l'editeur de macro d'Excel. Jusqu'ici tout va bien, cependant, lorsque je fais appel a ma fonction dans Excel, aucune information sur les arguments de ma fonction n'apparait
    >
    > Ce que je voudrais c'est avoir un descriptif de la fonction et de ses arguments comme pour les fonctions implementees par defaut sur Excel...
    >
    > Quelqu'un pourrait m'aider?
    >
    > Merci
    >
    > Francesco
    >
     
    lundi 23 mai 2011 12:50
  • Merci Isabelle,

    Je vais essayer de regarder ce que je peux faire avec ton lien.

    En revanche, j'aurais aime ne pas avoir a creer une sub contenant le descriptif des macros. En effet, si l'on exporte les macros vers d'autres projets (a l'aide d'un add-in par exemple), l'utilisateur n'aura toujours pas acces aux descriptifs, a moins bien evidemment qu'il ne lance la sub lui-meme...

    Comment contourner ce probleme??

    Francisco

    mardi 24 mai 2011 11:15
  • bonjour Francisco,
     
    mets la macro dans un module du .xla
     
    Sub MaFunctionPersoAide()
    Application.MacroOptions Macro:="NomFonction", Category:=7, _
        Description:="La description de ma fonction complémentaire.", _
        HelpFile:="C:\mon fichier d'aide.CHM", _
        HelpContextID:=4050
    End Sub
     et sur la page ThisWorkbook
     
    Private Sub Workbook_Open()
    MaFunctionPersoAide
    End Sur
     
    --
    isabelle
     
     
    mardi 24 mai 2011 11:41
  • Bonjour, Francisco,

    Est-ce que vous avez réussi à résoudre votre problème en utilisant les infos fournies par Isabelle ? Merci pour partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mercredi 25 mai 2011 12:14
  • Bonjour,

    Tout d'abord merci Isabelle pour votre reponse, je n'ai pas encore pu la tester mais ca devrait le faire :)

    Je tiendrai au courant les utilisateurs de la reussite (ou non) de cette solution des que je l'aurai implementee!

    Francisco

    jeudi 26 mai 2011 11:25
  • Bonjour,

    Voici un message de Laurent Longre sur le sujet :

    '-------------------------------------------------------------------
    ' =============================================
    ' 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

    ' =============================

    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.

    Si ça t'intéresse, j'ai mis l'exemple ci-dessus 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.
    '-------------------------------------------------------------------

    MichD
    --------------------------------------------
    "Francisco de la Ciudad" a écrit dans le message de groupe de discussion : 743a76ba-fc8e-49f7-8ee8-2f367ef540a7@communitybridge.codeplex.com...

    Bonjour a tous,

    J'ai cree une fonction VBA a l'aide de l'editeur de macro d'Excel. Jusqu'ici tout va bien, cependant, lorsque je fais appel a ma fonction dans Excel, aucune information sur les arguments de ma fonction n'apparait

    Ce que je voudrais c'est avoir un descriptif de la fonction et de ses arguments comme pour les fonctions implementees par defaut sur Excel...

    Quelqu'un pourrait m'aider?

    Merci

    Francesco

    dimanche 29 mai 2011 15:28
  • Bonjour, Francisco,

    Vu que vous n’êtes pas revenu avec des informations sur la suite de vos démarches, on change le type de ce thread en discussion. Si vous n’avez pas réussi à résoudre votre problème, n'hésitez pas à modifier le type du thread à « Question ». Essayez aussi la solution de MichD et svp partagez avec nous les résultats. Merci d’avance !

     

    Bonne journée,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    lundi 30 mai 2011 07:04
  • Bonjour a tous,

    J'ai testé les deux solutions qui m'ont été fournies, les deux fonctionnent bien et m'ont permis de réaliser ce que je desirais.

    Les deux réponses reposent sur le même principe, à savoir placer les fonctions dans un module standard et la description des fonctions dans le module "This Workbook", avec execution a l'ouverture du wkb.

    Je recommande la version de MichD, plus complète, ce qui n'enlève pour autant rien à la pertinence de la réponse d'Isabelle.

    Je remercie donc Isabelle et MichD de m'avoir aidé, en espérant que ce thread sera utile à d'autres utilisateurs.

    Francisco

    lundi 30 mai 2011 10:06
  • Bonjour,

     

    Merci pour tenir la communauté informée sur la suite de vos démarches.

     

    Bonne journée,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    lundi 30 mai 2011 10:11