Faire disparaitre une macro

  • Initiateur de la discussion Hady
  • Date de début
H

Hady

Guest
Bonjour @ tous et @ toutes,

Ma question est relativement simple mais je n'ai pas trouvé l'info. Est-il possible de faire disparaitre une macro?

Je m'explique dans MS VB, j'ai un certain nombre de macro. Parmi ces macros, un certain nombre n'est utilisé que par le biais d'autres macros. Ce que je voudrais c'est que ces sous-programmes n'apparaissent pas dans Excel menu 'Outils>Macro>Macros...' : je voudrais les faire disparaitre. J'espère que c'est possible.

Merci @ tous
 
J

jerome-gmc

Guest
Click droit insertion 'module de classe'

Et la les macros n'apparaissent pas dans 'Outils>Macro>Macros...'

En fait je ne sais pas à quoi sert 'modules de classe', ca sert peut être à ça?

Quelqu'un peut confirmer?
 

Ti_

Nous a quitté
Repose en paix
oui, c'est simple, en haut de ton module, juste en dessous de Option Explicit (qui devrait être - pour tous - la première ligne par défaut de tout module) tu mets l'instruction : Option Private Module
Et voilà.

Evidemment si tu ne travailles pas en Option Explicit (ce que je ne conseille pas), Option Private Module sera alors placé en première ligne du module...
 
H

Hady

Guest
C'est génial ça marche!
Mille mercis!

Autre question... J'ai mis mon classeur en lecture seule avec un code. Seulement même si on ouvre le classeuren lecture seule, on peut l'enregistrer sous un autre nom et se le récupérer sans code : C'est très embêtant. Je voudrais aussi empêcher les utilisateurs d'avoir accès au code VBA... Comment faire?
Je ne veux pas protéger les cellules de mon classeur par contre. Je n'ai rien trouvé de réellement satisfaisant.
 
J

jerome-gmc

Guest
regarde dans l'aide:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
(à coller dans 'thisWorkBook')

tu dois pouvoir empecher d'enregistrer, mais je ne sais pas faire



clic droit sur le nom du projet / propriété du projet / protection et verrouiller le projet
 
H

Hady

Guest
'Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)' me permet d'exécuter une macro avant qu'un utilisateur sauvegarde mais comme tu l'as dit toi même, je ne vois pas comment bloquer l'enregistrement : ma macro s'éxécute et la personne peut sauvegarder quand même. Et puis si l'on crée une copie du fichier dans l'explorer sans ouvrir excel ça fait sauter la protection du coup ça ne me parait pas suffsant : ça peut être un premier pas.


Sinon le 'clic droit sur le nom du projet / propriété du projet / protection et verrouiller le projet[/quote]' protège très bien le code dans tous les cas!
 

Ti_

Nous a quitté
Repose en paix
Si tu veux simplement empêcher l'utilisateur de faire des actions maladroites qui risquent d'empêcher le bon fonctionnement de ton programme, alors la méthode du :

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Cancel=True
End Sub

et de la protection du fichier et/ou des feuilles, même sans mots de passe, me paraissent suffisantes. Cependant, si tu veux empêcher qu'on aille voir le code de ton programme ou qu'on déprotège le fichier, alors c'est peine perdue, il suffit d'ouvrir le fichier sans activer les macros, et on peut faire à peu près tout ce qu'on veut de n'importe quel fichier Excel, quelles que soient les protections qu'on y a mises.

Pour en revenir aux préventions contre les actions maladroites, il me semble qu'une mise en garde placée bien visiblement soit déjà une bonne chose. Ensuite rien n'empêche un utilisateur d'être crétin et de ne pas suivre ces mises en garde, mais alors ce sera tant pis pour lui.
 
H

Hady

Guest
Merci de ta réponse! :)
Tant pis alors je maintiendrais ma hotline aux utilisateurs. De toute façon, le fait que j'ai empêché la modification du code VBA est déjà une excellente chose. Tant pis pour la lecture seule!

Merci encore à tous les acteurs de ce forum
 

Discussions similaires

Réponses
26
Affichages
442

Statistiques des forums

Discussions
312 413
Messages
2 088 200
Membres
103 762
dernier inscrit
rouazali