sécuriser feuilles excel

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:

sylvanu

XLDnaute Barbatruc
Supporter XLD
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:

MFoxy

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

haxa

XLDnaute Nouveau
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"
 

FaruSZ

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

haxa

XLDnaute Nouveau
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.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

FaruSZ

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

FaruSZ

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

GALOUGALOU

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

  • mot de passe ouverture certain onglets ADMIN ADMIN.xls
    123 KB · Affichages: 5

FaruSZ

XLDnaute Occasionnel
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:

GALOUGALOU

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

  • mot de passe ouverture certain onglets ADMIN ADMIN.xls
    123 KB · Affichages: 11
Dernière édition:

FaruSZ

XLDnaute Occasionnel
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 :D
 

Discussions similaires

Statistiques des forums

Discussions
312 339
Messages
2 087 408
Membres
103 539
dernier inscrit
RAPH2012