macro cacher plusieurs feuilles

ced91300

XLDnaute Occasionnel
bonjour à tous,

j'ai une macro pour cacher 1 page (nommée "tab") elle fonctionne très bien, je voudrais y rajouter une 2eme page (nommée "graph") mais je n'y arrive pas afin que la macro me cache tab et graph


merci
cordialement


Sub Cache()
For i = 1 To 5
Worksheets("tab").Visible = xlSheetHidden
Next i
End Sub
Sub Décache()
Dim nbressais As Byte
Dim Mdp
retour:
Mdp = InputBox("Entrez le mot de passe", "Avertissement : l'accès aux Feuilles est sécurisé ")
If Mdp = "" Then Exit Sub
If Mdp = "toto" Then
For i = 1 To 5
Worksheets("tab").Visible = xlSheetVisible
Next i
For Each Ctrl In Sheets("Tab").OLEObjects
If Ctrl.progID = "Forms.CommandButton.1" Then Ctrl.Object.Caption = "Cacher les Feuilles"
Next Ctrl
Else
nbressais = nbressais + 1
If nbressais = 3 Then
MsgBox "Ce classeur va se fermer."
ThisWorkbook.Close SaveChanges:=False
End If
MsgBox "Mot de passe incorrect."
GoTo retour
End If
End Sub
 

Paf

XLDnaute Barbatruc
Bonjour,

Dans Sub Cache(), s'il n'y a qu'une ou deux feuilles à masquer, inutile d'utiliser une boucle de 5 itérations.


VB:
Sub Cache()
Worksheets("tab").Visible = xlSheetHidden
Worksheets("graph").Visible = xlSheetHidden
End Sub

A+



Edit
Dans Sub Décache(), mêmes éléments :
Code:
Worksheets("tab").Visible = xlSheetVisible
Worksheets("graph").Visible = xlSheetVisible

Re Edit : Bonjour Staple1600
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour à tous, Paf

Une autre syntaxe
(Il faut au moins toujours une feuille visible dans un classeur)
VB:
Sub demasque()
Feuil1.Visible = -1: Feuil2.Visible = -1
End Sub
Sub masque()
Sheets(Array("Feuil1", "Feuil2")).Visible = 0
End Sub
NB: changer les noms des feuilles dans la macro, selon les besoins.
 
Dernière édition:

ced91300

XLDnaute Occasionnel
Bonjour,

Dans Sub Cache(), s'il n'y a qu'une ou deux feuilles à masquer, inutile d'utiliser une boucle de 5 itérations.


VB:
Sub Cache()
Worksheets("tab").Visible = xlSheetHidden
Worksheets("graph").Visible = xlSheetHidden
End Sub

A+

Edit
Dans Sub Décache(), mêmes éléments :
Code:
Worksheets("tab").Visible = xlSheetVisible
Worksheets("graph").Visible = xlSheetVisible

merci de ton aide,

j'ai corrigé ca fonctionne nickel

cordialement
 

ced91300

XLDnaute Occasionnel
Bonjour à tous, Paf

Une autre syntaxe
(Il faut au moins toujours une feuille visible dans un classeur)
VB:
Sub demasque()
Feuil1.Visible = -1: Feuil2.Visible = -1
End Sub
Sub masque()
Sheets(Array("Feuil1", "Feuil2")).Visible = 0
End Sub

bonjour merci pour ta réponse,

c'est en fait une macro que j'ai récupéré sur le net, et que j'ai adapté à mon classeur

celui-ci comporte bien 5 feuilles au total
les 3 premieres reste visible en permanence

cordialement
 

ced91300

XLDnaute Occasionnel
bonsoir,
merci pour vos réponse
par contre malgré le MDP, on peut ouvrir les feuilles cachées par le biais d'un clic droit sur une feuille, puis afficher puis selection de la feuille et elle s'ouvre
y'a t'il un moyen de bloquer cela?

cordialement
 

Staple1600

XLDnaute Barbatruc
Re, Bonjour Jacky67


y'a t'il un moyen de bloquer cela?
Oui mais non ;)
Oui en mettant un mot de passe sur le projet VBA.

Non parce que ce verrou peut s'ôter sans connaitre le mot de passe en moins de 27 secondes
(13 les nuits sans lune)

NB: On peut aussi simplement enregistrer une copie du classeur en *.xlsx puis afficher les feuilles.
Et si les feuilles sont protégées par un mot de passe, là aussi on peut supprimer la protection sans connaitre le mot de passe.
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
bonsoir,
merci pour vos réponse
par contre malgré le MDP, on peut ouvrir les feuilles cachées par le biais d'un clic droit sur une feuille, puis afficher puis selection de la feuille et elle s'ouvre
y'a t'il un moyen de bloquer cela?

cordialement
RE...
Remplace
Code:
Sub Cache()
    Sheets("tab").Visible =0
    Sheets("graph").Visible = 0
End Sub
par
Code:
Sub Cache()
    Sheets("tab").Visible = xlSheetVeryHidden
    Sheets("graph").Visible = xlSheetVeryHidden
End Sub
 

ced91300

XLDnaute Occasionnel
RE...
Remplace
Code:
Sub Cache()
    Sheets("tab").Visible =0
    Sheets("graph").Visible = 0
End Sub
par
Code:
Sub Cache()
    Sheets("tab").Visible = xlSheetVeryHidden
    Sheets("graph").Visible = xlSheetVeryHidden
End Sub

re bonjour,

j'ai adapté cela à mon tableau, mais en passant par une des feuilles avec un simple clic droit "afficher feuille" on peu ouvrir les feuilles masquée par code bva

Sub Cache()
Worksheets("tab").Visible = xlSheetHidden
Worksheets("graph").Visible = xlSheetHidden

End Sub
Sub Décache()
Dim nbressais As Byte
Dim Mdp
retour:
Mdp = InputBox("Entrez le mot de passe", "Avertissement : l'accès aux Feuilles est sécurisé ")
If Mdp = "" Then Exit Sub
If Mdp = "luca" Then
For i = 1 To 5
Worksheets("tab").Visible = xlSheetVisible
Worksheets("graph").Visible = xlSheetVisible
Next i
For Each Ctrl In Sheets("Tab").OLEObjects
If Ctrl.progID = "Forms.CommandButton.1" Then Ctrl.Object.Caption = "Cacher les Feuilles"
Next Ctrl
Else
nbressais = nbressais + 1
If nbressais = 3 Then
MsgBox "Ce classeur va se fermer."
ThisWorkbook.Close SaveChanges:=False
End If
MsgBox "Mot de passe incorrect."
GoTo retour
End If
End Sub
 

Jacky67

XLDnaute Barbatruc
Re

Jacky67
Cela n’empêche pas le clic-droit-> Visualiser le code -> aller sur la feuille masquée et remettre la propriété de la feuille sur Visible= True
(d'ou mon précédent message)
Bonsoir Staple1600
Nos messages se sont croisés, je n'avais pas vu le tien, désolé
Il y a aussi
Code:
Private Sub Workbook_Open()
Call Cache
Application.CommandBars("ply").Enabled = False
End Sub
Qui empêche le clic droit sur un onglet.
Mais bon, je ne pense pas... qu'un MDP dans un code vba soit une bonne protection.
Mais y a t'il une bonne protection :rolleyes:
 

Staple1600

XLDnaute Barbatruc
Re

Jacky67
Plus de clic-droit
C'est pas grave : ALT+F11
ou ouvrir la copie *.xlsx toute fraîche du classeur "sensible".

Et on est bien d'accord sur le mot de passe sur le projet VBA ;)
Non parce que ce verrou peut s'ôter sans connaitre le mot de passe en moins de 27 secondes
(13 les nuits sans lune)

La bonne protection c'est ne pas utiliser Excel en y mettant des données sensibles. ;)
Ou alors créer des copies expurgées donc diffusables à tous vents.
 

Discussions similaires

Réponses
2
Affichages
88

Statistiques des forums

Discussions
312 199
Messages
2 086 159
Membres
103 145
dernier inscrit
lea.