La plupart des lecteurs savent déjà que vous pouvez créer des fonctions et des sous-programmes à l’aide de VBA. Ce n’est pas différent de ce qu’il est sous l’homonyme de VBA, Visual Basic. Normalement, une macro apparaît dans la liste des macros lorsque vous affichez la boîte de dialogue Macros (appuyez sur Alt + F8), sauf si l’une des trois conditions est remplie:

  • La macro est une fonction. Les fonctions renvoient généralement des informations et nécessitent que des informations leur soient transmises. Étant donné que l’exécution d’une macro à partir de la liste des macros ne permet à aucune de ces choses de se produire, Excel indique qu’il n’est pas nécessaire de la répertorier. Les fonctions définies par l’utilisateur, qui sont très utiles dans Excel, ne sont pas affichées dans la boîte de dialogue Macros car ce sont, après tout, des fonctions.

  • La macro est un sous-programme avec des paramètres. Excel suppose que puisque les paramètres sont nécessaires et que vous ne pouvez pas fournir de paramètres en choisissant le sous-programme dans la liste des macros, il n’est pas nécessaire de le lister.

  • Le sous-programme a été déclaré privé. Cela signifie que le sous-programme n’est utile que pour coder dans le module dans lequel il est déclaré.

Le seul type de macro répertorié dans la boîte de dialogue Macros est un sous-programme non privé sans paramètres. Dans certaines situations, cependant, il se peut que vous ne souhaitiez pas non plus ceux répertoriés. Par exemple, vous avez peut-être créé des sous-programmes universels qui ne font rien d’utile s’ils sont appelés seuls; ils sont conçus pour être appelés à partir d’un autre code. Par exemple, considérons la macro suivante:

Sub MySub()

MsgBox "We are running the macro"

End Sub

Cette macro apparaîtra dans la boîte de dialogue Macros. Si vous ne voulez pas qu’elle apparaisse, vous pouvez rechercher plusieurs solutions, qui deviennent toutes évidentes en examinant les trois façons dont les macros sont exclues de la liste des macros. La première solution potentielle est d’examiner votre code et de savoir s’il est vraiment «universel». Avez-vous besoin du code de plusieurs modules? Si vous ne le faites pas, déclarez le sous-programme Private; il n’apparaîtra pas dans la boîte de dialogue Macros. Ainsi, la macro de problème précédente devient la suivante:

Private Sub MySub()

MsgBox "We are running the macro"

End Sub

La deuxième façon de masquer la macro consiste simplement à la convertir en fonction.

Cela peut sembler étrange, en particulier si vous ne souhaitez renvoyer aucune valeur, mais c’est parfaitement permis. Dans VBA, une fonction n’a pas à renvoyer de valeur. En l’absence de déclaration explicite d’une valeur de retour, la fonction retournera un résultat par défaut (par exemple, Boolean retourne False, String retourne «  », etc.) Ainsi, la procédure de problème pourrait être modifiée en fonction et déclarée comme indiqué ici:

Function MySub() As Boolean     MsgBox "We are running the macro"

End Function

Cette procédure ne s’affiche pas dans la boîte de dialogue Macros et ne nécessite pas d’arguments. Il renvoie False par défaut, mais ce résultat peut être ignoré. Selon la nature du sous-programme que vous modifiez, il peut être dans votre intérêt d’autoriser réellement la fonction convertie à renvoyer Vrai ou Faux en fonction du succès de ce qui est fait dans le code. Dans ce cas, la fonction convertie est une fonction réelle, et pas vraiment un sous-programme factice, car elle renvoie quelque chose de valeur.

La troisième solution potentielle consiste à utiliser certains paramètres fictifs avec le sous-programme. Vous n’avez rien à faire avec eux dans le sous-programme lui-même, mais en les incluant, la procédure n’est pas répertoriée dans la liste des macros. Dans ce scénario, le sous-programme de problème est changé en quelque chose comme ce qui suit:

Sub MySub(Void As Integer)

MsgBox "We are running the macro"

End Sub

Désormais, la procédure n’est pas répertoriée dans la liste des macros, mais vous devez modifier la manière dont le sous-programme est appelé. Vous devez modifier chaque instance pour qu’un paramètre soit passé, même s’il n’est jamais utilisé.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3291) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

lien: / excelribbon-Hiding_Macros [Masquer les macros].