Macro pour pages en xlSheetVeryHidden à la fermeture fichier

fourstars10pas

XLDnaute Nouveau
Bonjour,

Je vous contacte suite à un petit problème de macro:
J'ai un fichier contenant plusieurs feuilles de calculs, j'ai une feuille qui me sert de page d'accès à 3 feuilles cachées par ce macro et protégées par un mot de passe pour les faire apparaître:

Option Explicit

Sub voirfeuille1()
If InputBox("Mot de passe ?") = "xxxx1" Then Sheets("Sheet1").Visible = True
End Sub

Sub voirfeuille2()
If InputBox("Mot de passe ?") = "xxxx2" Then Sheets("Sheet2").Visible = True
End Sub

Sub voirfeuille3()
If InputBox("Mot de passe ?") = "xxxx3" Then Sheets("Sheet3").Visible = True
End Sub


A la fermeture de mon fichier, je voulais donc que les pages repasse en xlSheetveryhidden, que le fichier soit enregistré ou non avec ce code suivant:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Sheet1").Visible = xlVeryHidden
Sheets("Sheet2").Visible = xlVeryHidden
Sheets("Sheet3").Visible = xlVeryHidden
End Sub


Lorsque j'active la fonction xlveryhidden sur ces 3 feuilles, que j'enregistre mon VBA, les feuilles disparaissent. Si je les ouvres grâce au mot de passe défini en cliquant sur le bouton de commande correspondant, elles apparaissent, cependant après fermeture du fichier et réouverture les feuilles ne sont plus caché par la fonction xlSheetveryhidden et je doit donc retourner dans le VBA pour remettre l'option.

Si quelqu'un peut me fournir une modification au code ou un nouveau code me permettant de corriger cette erreur, merci d'avance.

Thomas
 

david84

XLDnaute Barbatruc
Re : Macro pour pages en xlSheetVeryHidden à la fermeture fichier

Bonjour,
peut-être dans une Sub Workbook_Open :
Code:
Private Sub Workbook_Open()
Sheets("Sheet1").Visible = True
Sheets("Sheet2").Visible = True
Sheets("Sheet3").Visible = True
End Sub
Je n'ai pas testé mais si tes feuilles sont protégées par un mot de passe à la fermeture du classeur il te faudra sûrement inclure la méthode Unprotect dans la macro pour déprotéger chaque feuille.
A+
 

fourstars10pas

XLDnaute Nouveau
Re : Macro pour pages en xlSheetVeryHidden à la fermeture fichier

Bonjour,
peut-être dans une Sub Workbook_Open :
Code:
Private Sub Workbook_Open()
Sheets("Sheet1").Visible = True
Sheets("Sheet2").Visible = True
Sheets("Sheet3").Visible = True
End Sub
Je n'ai pas testé mais si tes feuilles sont protégées par un mot de passe à la fermeture du classeur il te faudra sûrement inclure la méthode Unprotect dans la macro pour déprotéger chaque feuille.
A+

Bonjour, en fait mes feuilles sont accessible depuis une feuille a part. Sur la feuille d’accès j'ai 3 boutons d’accès (1 par feuille), chaque bouton demandant un mot de passe pour acceder à la feuille correspondante caché par le code xlSheetveryhidden.

Le problème est qu'une fois que je clique sur les boutons pour acceder aux pages, je rentre mot de passe, les pages s'ouvrent et je peux y avoir accès pour lecture et ecriture. Puis quand je ferme le fichier avec ou sans enregistrement, les feuilles ne sont plus cachées par la fonction xlSheetveryhidden à l'ouverture du fichier xlsm.

Peut etre est-ce plus clair.

Thomas
 

Pierrot93

XLDnaute Barbatruc
Re : Macro pour pages en xlSheetVeryHidden à la fermeture fichier

Bonjour Thomas, David:)

peut être comme ceci, à placer dans le module "thisworkbook", enfin si j'ai bien compris ton souci, pas sûr...
Code:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets(Array("Feuil1", "Feuil2", "Feuil3"))
    With ws
        .Protect "toto"
        .Visible = xlSheetVeryHidden
    End With
Next ws
Me.Save
End Sub
bonne journée
@+
 

fourstars10pas

XLDnaute Nouveau
Re : Macro pour pages en xlSheetVeryHidden à la fermeture fichier

Bonjour Thomas, David:)

peut être comme ceci, à placer dans le module "thisworkbook", enfin si j'ai bien compris ton souci, pas sûr...
Code:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets(Array("Feuil1", "Feuil2", "Feuil3"))
    With ws
        .Protect "toto"
        .Visible = xlSheetVeryHidden
    End With
Next ws
Me.Save
End Sub
bonne journée
@+

Merci, sa a l'air de fonctionner mais à quoi sert la partie avec la protection "toto" ???
(Histoire de dormir moins bête ce soir ^^)

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Macro pour pages en xlSheetVeryHidden à la fermeture fichier

Re,

j'avais cru comprendre que tu avais / voulais protégé tes feuilles.... donc je reprotégeais à la fermeture... mais si ce n'est pas le cas tu peux enleer cette instruction (.protect "toto") A noter "toto" = mot de passe
 

Discussions similaires

Réponses
5
Affichages
474
Compte Supprimé 979
C
Réponses
6
Affichages
278