Bloquer l'accès à des feuilles masqués
Bonsoir,
Je suis "actif" en ce moment en posant des questions ici car je suis en train de travailler sur un tableur d'une association.
Lorsque l'on masque des feuilles, pour les faire apparaitre on clique sur un onglet/afficher et on fait un choix et il s'affiche !
Est-il possible de bloquer par un mdp, pour que les feuilles masquées ne s'affichent pas ?
sauf à indiquer le mdp
Cordialement
Bonsoir Tonthon,
Dans vba (Alt F11) pour la feuille concernée dans Propriétés à la ligne visible sélectionnez 2-XlSheetVeryHidden et protéger la feuille par un mot de passe.
Donc la feuille n'est pas visible et non accessible par l'onglet "Afficher / Masquer"
Pour débloquer via macro (Exemple feuill2) au plus simple (l'accès peut être programmé par mot de passe)
Sub afficher()
Worksheets("feuil2").Visible = True 'Rend visible l'onglet feuil2
Worksheets("feuil2").Activate 'Active l'onglet feuil2
ActiveSheet.Unprotect ("TOTO") 'Enlève le mote de passe
End Subet1000lio a écrit :Dans vba (Alt F11) pour la feuille concernée dans Propriétés à la ligne visible sélectionnez 2-XlSheetVeryHidden et protéger la feuille par un mot de passe.
Donc la feuille n'est pas visible et non accessible par l'onglet "Afficher / Masquer"
Pour débloquer via macro (Exemple feuill2) au plus simple (l'accès peut être programmé par mot de passe)
Bonjour et1000lio
Ta proposition laisse entr'ouvrir une meilleure solution pour moi.
J'ai un tableur avec une feuille "références" avec 5 autres feuilles et que ces derniers soient visibles n'est pas gênant en soit -puisque protégées et non modifiables-
et j'aimerais que les titulaires du mot de passe puissent les protéger/déverrouiller si possible en une seule fois
On peut mettre en place un mdp permanent sur ces 5 feuilles et n'avoir dans ce cas qu'à mettre le mdp pour les déverrouiller ?
C'est possible ?
Cordialement
VBABEGINNER a écrit :Bonsoir,
Oui tu vas dans revieuw / protect workbook et là tu protèges la structure.
Désolé des appellations en anglais mais mon Excel est en anglais
Tu arrives à trouver ?
Cordialement,
Bonjour,
Je vois où cela se trouve..... je fais des essais cet après-midi et te tiens informé
Bon appétit
Bonjour,
Une proposition à étudier.
Il faudra penser à verrouiller le projet pour l'affichage.
Cdlt.
Bonjour à tous,
J'ai essayé toutes les solutions et aucune n'est mauvaise !
Mais, parce qu'il y a un mais une fois appliquée dans mon tableur réel, il apparaît de nouveaux inconvénients s'agissant d'un tableur qui passe entre les mains de plusieurs personnes d'une association.
Je vous remercie et je clos ce sujet. Je pense refaire un nouveau post explicitant mes soucis pour voir si quelqu'un peut relever le défi car ce n'est pas tout simple tout en restant intéressant.
Cordialement
Tonthon
Bonjour Jean-Eric
Je reviens sur la solution proposée.
Est-il possible d'avoir la demande de mdp AVANT l'affichage d'une ou des feuilles masquées ?
En effet, en l'état la feuille masquée s'affiche et on peut prendre connaissance de son contenu sans y avoir accès.
Cordialement
Tonthon
Bonjour Tonthon, bonjour Jean-Eric et au FORUM
Une autre approche (code collecté sur le net et que j'utilise) avec multiple utilisateurs et onglets prédéfinis en fonction des mots de passe
Toutes les onglets sont masqués en mode 2 - xlSheetVeryHidden dans le VBAProject sauf l'onglet ACCUEIL
Cliques sur le bouton ACCÈS
1) avec le login emile et le mot de passe ABCD
* Apparition du bouton formulaire dans l'onglet ACCUEIL
* Apparition de l'onglet BDD
2) avec le login tonton et le mot de passe ABC
* Apparition du bouton formulaire dans l'onglet ACCUEIL
* Apparition de TOUS LES ONGLETS
L'onglet UTILISATEURS permet de gérer les mots de passe et les différents utilisateurs avec des dates d'échéance des mots de passe.
Le Niveau 1 correspond à tous les utilisateurs
Le Niveau 2 correspond à l'administrateur qui a accès à tous les onglets du classeur
on peut ajouter des niveaux et paramétrer l'accès aux onglets.
La méthodologie est très bien décrite dans le code.
Amuses toi !!
Bonjour et1000lio
Incroyable.... comme tout le monde, je continuais à chercher à solutionner mon problème et je me disais si on pouvait afficher les feuilles masquées en fonction de Secrétaire, Trésorier, Administrateur.
J'ouvre le forum et tu apportes la preuve et la solution que cela existe.
Il ne me "reste plus" qu'à adapter les codes dans mon tableur réel..... je vous tiens au courant.
Etant absent, je reverrai cela qu'à partir de samedi.
Excellente journée
Tonthon
Bonjour à tous,
J'essaie d'adapter la solution proposée à un tableur d'une association.
Quelqu'un pourrait me virer le blocage "enregistrer" et "enregistrer sous" car j'ai mis des éléments dans les onglets, rajouté un onglet ....cela enregistre mais à l'ouverture toutes les modifications disparaissent.
D'autre part, j'aurais avoir un accès plus simple cf tableur joint, c'est possible ?
et enfin, je n'arrive pas à situer dans les codes l'aspect "position 1 ou 2 qui détermine les onglets à afficher.
Cordialement et excellente journée
Bonjour,
Dans le réel, j'ai 2 tableurs (secrétaire et trésorier) qui sont liés en partie.... avec chacun ses propres macros et codes.
Je les ai fusionné mais cela crée des conflits au niveau des codes que je ne sais pas résoudre avant même d'introduire la solution "accès avec mdp".
Je vais donc clore ce post pour me consacrer à une fusion des 2 tableurs -vierge de tout code ou macro- avec une montée en puissance en revenant ici le moment venu.
Merci pour vos bonnes idées
Cordialement
Bonjour Tonthon,
Pour info tu dois avoir dans ThisWorkbook un code similaire à ceci :
Annulation enregistrement :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True 'Annule les demandes d'enregistrement
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ThisWorkbook.Saved = True 'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture)
End Subou blocage "enregistrer sous
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then MsgBox ("Commande 'Enregistrer sous...' désactivée")
Cancel = SaveAsUI
End SubIl te suffit de les enlever.
et à ta question "et enfin, je n'arrive pas à situer dans les codes l'aspect "position 1 ou 2 qui détermine les onglets à afficher",
je reviens vers toi dans la journée. Je pars au "TAF"
Bonjour et1000lio
Merci pour l'intérêt que tu portes sur mon cas.
J'ai revu ce WE, le tableur MOT DE PASSE et l'idée de reprendre l'affichage ou non d'onglets via ACCUEIL me convient.
Par contre, le changement de mdp après une date... n'est pas utile dans mon cas.
Je ne retrouve pas ce que tu m'indiques mais je pense que cela provient tout simplement qu'en double-cliquant sur ThisWorkbook, tout ne s'affiche pas..... comment dois-je faire pour tout voir ?
Comme je l'avais indiqué, je suis en train de travaillé sur la fusion des tableurs "Secrétaire/Trésorier" que je teste.
A te lire,
Excellente journée
Tonthon,
1) Réponse à ta question : « Quelqu'un pourrait me virer le blocage "enregistrer" et "enregistrer sous" car j'ai mis des éléments dans les onglets, rajouté un onglet ....cela enregistre mais à l'ouverture toutes les modifications disparaissent. »
Dans fichier fourni le 18 avril à 11H04, il n’y a pas de blocage d’enregistrement ou d’enregistrement sous. J’ai pensé que tu avais cette problématique dans ton fichier source de travail. Mais cette problématique est inexistante dans le présent fichier, par contre dans ce fichier il y a une programmation à l’ouverture de ton fichier.
Celle-ci est inscrite dans ThisWorkbook, explication du code :
Private Sub Workbook_Open()
Dim ws As Worksheet
Sheets("ACCUEIL").Shapes("Bouton 1").Visible = False 'Rend invisible le bouton 1
Sheets("ACCUEIL").Activate 'active la feuille (ou onglet) "ACCUEIL"
For Each ws In Worksheets
If ws.Name <> "ACCUEIL" Then 'toutes les feuilles (ou onglet) différent d' "ACCUEIL"
ws.Visible = xlSheetVeryHidden ' sont masquées en mode xlSheetVeryHidden c'est-à-dire INACCESSIBLES même par "Afficher/Masquer"
End If
Next ws
End Sub2) Réponse à ta question : « je n'arrive pas à situer dans les codes l'aspect "position 1 ou 2 qui détermine les onglets à afficher. »
Dans l’Userform1 cette programmation se situe dans Private Sub Acces (Niveau As Byte)
a) Option 1 = Case1
Accès uniquement aux feuilles « ACCUEIL » et « BDD »
Case 1 ….
End If
Sheets("ACCUEIL").Shapes("Bouton 1").Visible = True 'On rend visible le bouton 5 pour affichage du formulaire.....
Sheets("BDD").Visible = True '...........// On rend les feuilles visibles.....
Unload Me
Case 2 ….b) Option 2 = Case2
Accès au trois feuilles
Donc si tu souhaites une option 3, tu rédige Case3 avec le même code que les précédents mais tu définis l’accès aux feuilles dont l’utilisateur a le droit d’accès.
3) Réponse à ta question : « Par contre, le changement de mdp après une date... n'est pas utile dans mon cas. »
Dans l’Userform1 cette programmation se situe dans Private Sub Acces (Niveau As Byte) et dans Private Sub ChangeCode()
Dans Private Sub Accès tu supprime toutes les « Call ChangeCode » et tu supprimes tous ligne du code Private Sub ChangeCode()
4) Réponse à ta question : « comment dois-je faire pour tout voir ? »
Tu rédiges une macro sous forme Private Sub : exemple
Private Sub afficher()
For Each ws In Worksheets '...............Boucle sur chaque feuille du fichier.....
ws.Visible = xlSheetVisible '..Les feuilles seront toutes visibles..
Next ws
End SubTu ne la verras pas dans Outils/Macros, mais en mettant son nom dans la fenêtre "nom de la macro", et en cliquant sur Exécuter ta macro s’exécutera et ouvrira tous les onglets.
Re?
Merci pour toutes ces précisons....
Je pense que je vais revoir cela tranquillement ce soir
Cordialement
Bonjour et1000lio
J'ai pris le temps pour découvrir, digérer ta solution qui sera sans aucun doute celle que je retiendrai pour un tableur unique d'une association avec un accès Président, Secrétaire etc.....avec affichage des onglets correspondants.
J'ai intégré les messages dans le tableur pour avoir tout sous la main et j'ai 2 questions marquées par une grosse flèche.
Enfin ou de plus, j'aimerai avoir plutôt un accès par un clic sur une cellule... cf tableur.
En résumé, si tu pouvais répondre à mes interrogations et mettre en musique l'accès par indiqué .
En tout cas, bravo pour tes explications très pédagogiques, tu te mets bien à la place du néophyte que je suis.
Cordialement
