Protéger son classeur si les macros ne sont pas activées dans Excel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zephir94

XLDnaute Impliqué
Bonjour à tous,

Afin de protéger mon classeur j'aurais besoin de protéger ce dernier si les macros ne sont pas activées lors de l'ouverture de celui-ci pour le rendre inutilisable.

Pour cela j'ai trouvé une déclaration dans Thisworkbook comme ceci :
Code:
Private Sub Workbook_Open()
   For s = 2 To Sheets.Count
     Sheets(s).Visible = True
   Next s    
....
End sub

et dans Workbook_BeforSave :

Code:
 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   For s = 2 To Sheets.Count      ' on masque les feuilles
     Sheets(s).Visible = xlVeryHidden
   Next s
End Sub

Cela fonctionne bien sauf que je voudrais le déplacer de l'événement befor save car il protège le classeur si un utilisateur le sauvegarde.
Donc j'ai tenté de le déplacer à la fermeture du classeur en utilisant l'événement beforClose comme ceci :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   For s = 2 To Sheets.Count      ' on masque les feuilles
     Sheets(s).Visible = xlVeryHidden
   Next s
End Sub
Le classeur à la fermeture ferme bien toutes les pages de ce côté la pas de soucis, par contre à l'ouverture il ne masque plus les feuilles alors qu'il le fait avant avec l'événement beforeSave ?

Quelqu'un pourrait-il me dire pourquoi ?

Par avance merci
 
Dernière édition:
Re : Protéger son classeur si les macros ne sont pas activées dans Excel

Bonjour Zephir, bonjour le forum,

S
i tu masques les onglets à la fermeture sans sauver, il est logique qu'à la réouverture, quand tu désactives les macros, tes onglets soient affichés.
je te propose donc :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim S as Object

For S = 2 To Sheets.Count      ' on masque les feuilles
    Sheets(S).Visible = xlVeryHidden
Next S
ThisWorkook.Save
End Sub
 
Re : Protéger son classeur si les macros ne sont pas activées dans Excel

Merci robert,

Effectivement c'est logique !!!!
Je me décerne le Boudin d'or du jour sous tes applaudissements !!!

Mais j'obtient une erreur de compilation : incompatibilité de type et la variable S est en jaune dans l'éditeur vba
Encore merci à toi
 
Dernière édition:
Re : Protéger son classeur si les macros ne sont pas activées dans Excel

Bonjour à toi pour l'instant 8 mais si je remets dans beforSave ca fonctionne parfaitement quelqye soit le nombre de feuilles.
Après un pas à pas dans l'éditeur il semblerait que se soit :
Code:
ThisWorkook.Save
qui entraîne cette erreur
 
Re : Protéger son classeur si les macros ne sont pas activées dans Excel

Merci à toi,

Effectivement je suis un boulet !
Par contre il y a t'il un moyen en vba d'éviter lors de l'ouverture du classeur une fois les macros activées que visuellement tous les fenêtres s'ouvrent et qu'il n'affiche qu'une feuille ?
Je connais :
Code:
Application.ScreenUpdating = False

Te remerciant encore
 
Re : Protéger son classeur si les macros ne sont pas activées dans Excel

Bonjour à tous,

Peux-tu essayer ceci dans le ThisWorkBook :

VB:
Option Explicit
Dim S&


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With


    For S = 2 To Sheets.Count
        Sheets(S).Visible = xlVeryHidden
    Next S
  
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
    
      ThisWorkbook.Save
End Sub


Private Sub Workbook_Open()
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With


    For S = 2 To Sheets.Count
        Sheets(S).Visible = True
    Next S


    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub

A+ à tous
 
Re : Protéger son classeur si les macros ne sont pas activées dans Excel

Re,
Salut l'ami JC 😉

Je rajouterai à ce qu'a mis JCGL, l'instruction au début
Code:
Application.EnableEvents = False
et
Code:
Application.EnableEvents = True
à la fin

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
546
Retour