Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Masquer le nom des macros

2 réponses
Avatar
Jac
Bonjour à tous,

y a-t-il un moyen de ne pas faire afficher avec ALT + F8 la liste des macros
disponibles mais de pouvoir quand même les lancer par un bouton ou une macro
évènementielle (Private Sub Workbook_Open(), ...) ?

Car si je mets un "Private" devant le nom de ma macro, je ne la montre plus,
mais quand je veux la lancer lors de l'ouverture du classeur, le vba me dit
"Sub ou Fonction non définie".

Merci d'avance à qui me mettra sur la voie.

Jac

2 réponses

Avatar
anonymousA
Bonjour,

si ta macro appelée ff est dans le module1 de ton classeur, tu peux
affecter à un bouton de la BO formulaires le texte suivant Module1.ff
dans le refedit "Nom de la macro" et du coup ca marchera même si ff
est déclarée comme Private.

A+

On 8 mar, 10:07, "Jac" wrote:
Bonjour à tous,

y a-t-il un moyen de ne pas faire afficher avec ALT + F8 la liste des mac ros
disponibles mais de pouvoir quand même les lancer par un bouton ou une macro
évènementielle (Private Sub Workbook_Open(), ...) ?

Car si je mets un "Private" devant le nom de ma macro, je ne la montre pl us,
mais quand je veux la lancer lors de l'ouverture du classeur, le vba me d it
"Sub ou Fonction non définie".

Merci d'avance à qui me mettra sur la voie.

Jac


Avatar
MichDenis
Voici une façon de procéder, il y a bien sûr des variantes :

Dans le haut des modules STANDARD, tu inscris en première ligne
ceci : Option Private Module
et toutes tes macros seront non accessibles que tu aies mis
le mot private ou non dans la ligne de déclaration de ces dernières

Attention, à partir de la fenêtre des macros (Alt + F8), elles ne seront
pas visibles mais si tu te souviens de leur nom, tu pourras quand même
les appeler en tapant leur nom dans la boîte de saisie

L'expression "Option Private Module" ne peut pas être utilisé dans un module de classe
que sont les modules des feuilles ou le ThisWorkbook. La conséquence de vouloir
restreindre leur visibilité, c'est que leur appel à partir d'un autre module ne peut
plus s'effectuer seulement par la mention de leur "NOM" dans la procédure appelante...
sauf si la procédure appelée appartient au même module que la procédure appelante.

Ce qui suit te permettre d'outre-passer cette restriction :

Si la macro appelé est dans un module standard :
"Test1" est le nom de la macro appelée
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

Si la macro appelé est dans un module feuille ou dans le ThisWorkbook
La seule différence est que tu dois ajouter le nom du module où la
macro est située :
"Test1" est le nom de la macro appelée
"Feuil1" -> Module feuille où est la macro
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!Feuil1.test1"
Application.Run LaMacro


"Jac" a écrit dans le message de news: 45efd243$0$24694$
Bonjour à tous,

y a-t-il un moyen de ne pas faire afficher avec ALT + F8 la liste des macros
disponibles mais de pouvoir quand même les lancer par un bouton ou une macro
évènementielle (Private Sub Workbook_Open(), ...) ?

Car si je mets un "Private" devant le nom de ma macro, je ne la montre plus,
mais quand je veux la lancer lors de l'ouverture du classeur, le vba me dit
"Sub ou Fonction non définie".

Merci d'avance à qui me mettra sur la voie.

Jac