sécuriser feuilles excel

  • Initiateur de la discussion Initiateur de la discussion FaruSZ
  • Date de début Date de début

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 !

FaruSZ

XLDnaute Occasionnel
Bonjour,
Je travail sur une base de données sur un fichier Excel ou j'ai plusieurs feuilles.
Je veux quand on termine de consulter la base( la base est consultable par des userfoms) que toutes les feuilles ne soient plus visible et je garde une seule feuille "ACCEUIL" pour permettre a l'utilisateur de consulter les feuilles après avoir introduit un mot de passe.
Jai su comment rendre les feuilles invisible quand on ouvre la base ou bien on ouvre les userform.
Le pb c'est que quand je ferme le userform j'ai les feuilles qui apparaissent moi je veux que seulement la feuille ACCEUIL reste visible apres avoir consulter la base.
Aussi je ferme tous le fichier Excel jai les feuilles qui ne sont plus visible.
 
Dernière édition:
Bonjour FaruSZ,
La macro ci dessous masque toutes les feuilles présentes dans le classeur à l'exception de la feuille nommée ACCUEIL :
VB:
Sub MasqueTouteFeuille()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets        ' Pour toute feuille du classeur
    If Sh.Name <> "ACCUEIL" Then            ' Si son nom n'est pas Acceuil
         Sheets(Sh.Name).Visible = False    'On la masque.
    End If
Next Sh
End Sub

Dans votre application, il vous faut modifier la fin de la macro de ThisWorkbook par :
VB:
Sub Workbook_Open()
.....
.....
' All sheets invisible except Acceuil sheet.
For Each sh In ThisWorkbook.Sheets          ' Pour toute feuille du classeur
    If sh.Name <> "ACCEUIL" Then              ' Si son nom n'est pas Acceuil
        Sheets(sh.Name).Visible = False         ' Masquer la feuille
    End If
Next sh
End Sub
 
Dernière édition:
Bonjour,

Si je peut me permettre, la ligne de code

VB:
  Sheets(sh.Name).Visible = False         '

Permettra toujours de decacher la feuille par clic droit unhide.

Il serait plus opportun d'utiliser au lieu du False, la propriété xlSheetVeryHidden, qui ne permet plus de decacher manuellement la feuille, mais uniquement par macro.

Bav,
MFoxy
 
Bonjour FaruSZ,
La macro ci dessous masque toutes les feuilles présentes dans le classeur à l'exception de la feuille nommée ACCUEIL :
VB:
Sub MasqueTouteFeuille()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets        ' Pour toute feuille du classeur
    If Sh.Name <> "ACCUEIL" Then            ' Si son nom n'est pas Acceuil
         Sheets(Sh.Name).Visible = False    'On la masque.
    End If
Next Sh
End Sub

Dans votre application, il vous faut modifier la fin de la macro de ThisWorkbook par :
VB:
Sub Workbook_Open()
.....
.....
' All sheets invisible except Acceuil sheet.
For Each sh In ThisWorkbook.Sheets          ' Pour toute feuille du classeur
    If sh.Name <> "ACCEUIL" Then              ' Si son nom n'est pas Acceuil
        Sheets(sh.Name).Visible = False         ' Masquer la feuille
    End If
Next sh
End Sub
Bonjour
Dans le deuxième code, il y a une erreur sur le nom de la feuille:
"ACCEUIL" au lieu de "ACCUEIL"
 
Merci tout le monde pour votre aide,
Jai teste le 2eme code jai tte les feuilles masquee sauf la feuille ACCEUIL par contre quand je termine de travailler sur la base et fermer le userform jai une erreur : impossible de définir la propriété visible de la classe worksheet dans le code la ligne en gras :

For Each Sh In ThisWorkbook.Sheets ' Pour toute feuille du classeur
If Sh.Name <> "ACCUEIL" Then ' Si son nom n'est pas Acceuil
Sheets(Sh.Name).Visible = False ' Masquer la feuille
End If
Next Sh
end sub
 
Merci tout le monde pour votre aide,
Jai teste le 2eme code jai tte les feuilles masquee sauf la feuille ACCEUIL par contre quand je termine de travailler sur la base et fermer le userform jai une erreur : impossible de définir la propriété visible de la classe worksheet dans le code la ligne en gras :

For Each Sh In ThisWorkbook.Sheets ' Pour toute feuille du classeur
If Sh.Name <> "ACCUEIL" Then ' Si son nom n'est pas Acceuil
Sheets(Sh.Name).Visible = False ' Masquer la feuille
End If
Next Sh
end sub
Bonjour,
Pour la deuxième fois, contrôler l'orthographe du mot "ACCUEIL" dans le deuxième code, est-ce bien le même que le nom de la feuille à ne pas masquer.
Dans votre texte, avant le code, le nom de la feuille est orthographiée "ACCEUIL", ce qui n'est pas pareil, d'où l'erreur ( inversion du "E" et du "U")
En effet, Excel doit avoir au moins une feuille de visible, ce qui n'est le cas avec ce code.
 
Bonjour,
Qu’appelez vous " quand je termine de travailler sur la base et fermer le userform " ?
Je viens de tester en incluant ce code à la fin de Workbook_Open, j'ouvre le fichier l'userform Matrice compétences s'ouvre, j'ouvre Gestion compte puis Choix Interface Pole essais, puis chosir une personne.
Puis je ferme tous les userforms, il me propose de sauvegarder le fichier et que je réponde oui ou non, il finit par afficher la feuille Acceuil sans erreur.
NB : Si le code que vous avez inclus est celui ci dessus alors il y a erreur car vous n'avez pas de feuille ACCUEIL mais une feuille ACCEUIL, donc il finit par essayer de fermer toutesles feuilles, et comme il est interdit de masquer la dernière feuille il émet une erreur.
Bonjour Haxa, effectivement l'erreur vient de là. Pourtant ce pb a bien été identifié. Post #4 et #5.
 
Bonjour,
Pour la deuxième fois, contrôler l'orthographe du mot "ACCUEIL" dans le deuxième code, est-ce bien le même que le nom de la feuille à ne pas masquer.
Dans votre texte, avant le code, le nom de la feuille est orthographiée "ACCEUIL", ce qui n'est pas pareil, d'où l'erreur ( inversion du "E" et du "U")
En effet, Excel doit avoir au moins une feuille de visible, ce qui n'est le cas avec ce code.
Pb resolu ca marche bien merci a vous il fallait corriger l'orthographe
 
Bonjour,
Qu’appelez vous " quand je termine de travailler sur la base et fermer le userform " ?
Je viens de tester en incluant ce code à la fin de Workbook_Open, j'ouvre le fichier l'userform Matrice compétences s'ouvre, j'ouvre Gestion compte puis Choix Interface Pole essais, puis chosir une personne.
Puis je ferme tous les userforms, il me propose de sauvegarder le fichier et que je réponde oui ou non, il finit par afficher la feuille Acceuil sans erreur.
NB : Si le code que vous avez inclus est celui ci dessus alors il y a erreur car vous n'avez pas de feuille ACCUEIL mais une feuille ACCEUIL, donc il finit par essayer de fermer toutesles feuilles, et comme il est interdit de masquer la dernière feuille il émet une erreur.
Bonjour Haxa, effectivement l'erreur vient de là. Pourtant ce pb a bien été identifié. Post #4 et #5.
Pb Resolu 🙂 ca marche super bien merci encore
 
bonjour faruSZ bonjour le fil bonjour le forum
allez, malgré tout ce classeur pour compléter l'information, chaque utilisateur choisi d'ouvrir sa session avec un mot de passe
ne pas oublier que toute ces sécurités protége de la maladresse mais pas de la malveilllance. il est très facile d'ouvrir le classeur avec les macros désactivées.
cordialement
galougalou
 

Pièces jointes

bonjour faruSZ bonjour le fil bonjour le forum
allez, malgré tout ce classeur pour compléter l'information, chaque utilisateur choisi d'ouvrir sa session avec un mot de passe
ne pas oublier que toute ces sécurités protége de la maladresse mais pas de la malveilllance. il est très facile d'ouvrir le classeur avec les macros désactivées.
cordialement
galougalou
Bonjour, merci bien pour ton fichier il répond très bien a mes besoins cependant la feuille paramétrage je la trouve pas.
Et comment ajouter d'autres utilisateurs et mots de passe pr consulter d'autres feuilles ?
Moi je travaille sur 60 feuilles . Je vais avoir 12 utilisateurs au total
Je sais je pose trop de questions mais je suis nocive en VBA :/ et j'essaye de l’apprendre tte seule.
Merci a vous tous
 
Dernière édition:
RE faruzsz re le fil
j'ai actualisé le classeur dans le fil #11, à l'ouverture tout sera plus clair
pour faire simple
c'est en ouvrant avec ADMIN que la feuille paramétrage est visible
dans la feuille paramétrage il faut impérativement que la ligne 1 soit totalement identique aux nombres d'onglet et à leurs noms.
en colonne A les noms d'utilisateur, et dans la ligne en rapport, des coches pour les feuilles autorisées à s'ouvrir.
si vous essayer de l'adapter à un autre classeur attention dans le code vba à bien respecté toutes les macros et les fonctions. (ouverture et fermeture du classeur etc).
un conseil :
monter le classeur par petit bout (ex par 5 onglets et 5 utilisateurs, sauvegarder et créer un nouveau classeur) pour vérifier son fonctionnement au fur et à mesure de la création.

dans le lien ci-dessous le principe de fonctionnement
dans le classeur que je vous propose, des fonctionnalitées supplémentaire permettent de vérifier l'activation des macros.( vba, code classeur), et de masquer les onglets quand un utilisateur quitte sa session.
cordialement
galougalou
 

Pièces jointes

Dernière édition:
RE faruzsz re le fil
j'ai actualisé le classeur dans le fil #11, à l'ouverture tout sera plus clair
pour faire simple
c'est en ouvrant avec ADMIN que la feuille paramétrage est visible
dans la feuille paramétrage il faut impérativement que la ligne 1 soit totalement identique aux nombres d'onglet et à leurs noms.
en colonne A les noms d'utilisateur, et dans la ligne en rapport, des coches pour les feuilles autorisés à s'ouvrir.
si vous essayer de l'adapter à un autre classeur attention dans le code vba à bien respecté toutes les macros et les fonctions. (ouverture et fermeture du classeur etc).
un conseil :
monter le classeur par petit bout (ex par 5 onglets et 5 utilisateurs, sauvegarder et créer un nouveau classeur) pour vérifier son fonctionnement au fur et à mesure de la création.

dans le lien ci-dessous le principe de fonctionnement
dans le classeur que je vous propose, des fonctionnalitées supplémentaire permettent de vérifier l'activation des macros.( vba, code classeur), et de masquer les onglets quand un utilisateur quitte sa session.
cordialement
galougalou
Votre fichier fonctionne parfaitement bien je l'ai adapte a ma base de données en rajoutant d'autres utilisateurs et ca marche super bien.
Tested and approved 😀
 
- 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
38
Affichages
901
Retour