Comme beaucoup d'entre nous, mes fichiers Excel comprennent diverses macros écrites en VBA.
Je voudrais vérifier, au démarrage de mon fichier excel que le niveau de sécurité du PC utilisé, autorise bien l'activation des macros.
- Si le système autorise bien les macros ---> rien de spécial, le fichier s'ouvre normalement
- Sinon
Message: "Les macros ne sont pas actives, je vous invite à revoir le niveau de sécurité. Je vais fermer votre fichier !" et fermeture du fichier en sortie de ce message.
En fait, il s'agit d'écrire ici un petit code VBA et le placer dans mon fichier, une macro donc !
Mais si les macros ne sont pas activées ... ce code ne serait jamais exécuté !??
Sauf peut-être si on le place dans la partie "ThisWorkbook" ???
Re : VBA Excel: Contrôle de l'activation des macros ?
bonjour Zorgloub,
une solution possible serait de créer une feuille affichant le message "Vous devez activer les macros".
Puis :
> à la fermeture du classeur, tu caches toutes les feuilles sauf celle-là
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Sheets("FeuilleActivationDesMacros").Visible = xlSheetVisible
Dim curSheet As Worksheet
For Each curSheet In ThisWorkbook.Sheets
If curSheet.Name <> "FeuilleActivationDesMacros" Then curSheet.Visible = xlSheetVeryHidden
Next curSheet
ThisWorkbook.Save
End Sub
> à l'ouverture, tu cache cette feuille et affiche les autres
Code:
Private Sub Workbook_Open()
Dim curSheet As Worksheet
For Each curSheet In ThisWorkbook.Sheets
If curSheet.Name <> "FeuilleActivationDesMacros" Then curSheet.Visible = xlSheetVisible
Next curSheet
ThisWorkbook.Sheets("FeuilleActivationDesMacros").Visible = xlSheetVeryHidden
End Sub
si les macros ne sont pas activées, la seule feuille affichée du classeur sera celle contenant le message "Vous devez activer les macros".
Re : VBA Excel: Contrôle de l'activation des macros ?
Bonjour le forum,
Pour ma part j'utilise la solution proposée par mromain.
En fait cette solution rend le classeur inutilisable par l'utilisateur , le force à refermer le classeur puis à l'ouvrir à nouveau en activant les macros.
Re : VBA Excel: Contrôle de l'activation des macros ?
bonjour Zorgloub,
une solution possible serait de créer une feuille affichant le message "Vous devez activer les macros".
Puis :
> à la fermeture du classeur, tu caches toutes les feuilles sauf celle-là
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Sheets("FeuilleActivationDesMacros").Visible = xlSheetVisible
Dim curSheet As Worksheet
For Each curSheet In ThisWorkbook.Sheets
If curSheet.Name <> "FeuilleActivationDesMacros" Then curSheet.Visible = xlSheetVeryHidden
Next curSheet
ThisWorkbook.Save
End Sub
> à l'ouverture, tu cache cette feuille et affiche les autres
Code:
Private Sub Workbook_Open()
Dim curSheet As Worksheet
For Each curSheet In ThisWorkbook.Sheets
If curSheet.Name <> "FeuilleActivationDesMacros" Then curSheet.Visible = xlSheetVisible
Next curSheet
ThisWorkbook.Sheets("FeuilleActivationDesMacros").Visible = xlSheetVeryHidden
End Sub
si les macros ne sont pas activées, la seule feuille affichée du classeur sera celle contenant le message "Vous devez activer les macros".
Cela ne fonctionne pas si on fait successivement plusieurs enregistrer sous, seul le dernier fichier sera fermé (donc seule le dernier fichier aura les feuilles de maquées)
,
Tout les autres classeurs qui ont été enregistré précedemment via le saveas, se retrouveront avec les feuilles visibles. Donc saissisable si VBA non activé.
Il faut pour cela sur l'évènement before save : masquer les feuilles et afficher la feuille FeuilleActivationDesMacros,
Le saveas s'effectue,
Il faut enfin dans l'évènement after save : masquer la feuille FeuilleActivationDesMacros et afficher les autres.
Ce qui fait que pour chaque classeur, il sera dans l'état du dernier enregistrement (feuille FeuilleActivationDesMacros affichée et les autres masquées).