Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

merci de ton aide,

j'ai corrigé ca fonctionne nickel

cordialement
 

ced91300

XLDnaute Occasionnel

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
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 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
 

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.
 

RoyalP

XLDnaute Occasionnel
pour demasquer les feuilles j'utilise ca:

VB:
 Sub Afficher_Feuilles_Masquées()
Dim Feuille As Object
For Each Feuille In ActiveWorkbook.Sheets
Feuille.Visible = xlSheetVisible
Next
End Sub

si ca peut servir
 

Discussions similaires

Réponses
2
Affichages
110
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…