Protéger un onglet pour empêcher son ouverture

Tophe2

XLDnaute Impliqué
Bonjour le forum

Voilà j'ai un fichier avec plusieurs onglets, le problème c'est que plusieurs personnes peuvent consulter les onglets (sans modifier le contenu) je souhaiterai interdire l'accès de certains onglets et pouvoir laisser l'accès sur d'autres onglets en fonction du nom d'utilisateur et/ou de l'ordinateur utilisé.

Mais je ne sais même pas si cela est possible ?

Et si oui par où il faut commencer, explication et exemple (sur un onglet ou plusieurs).

Ci joint un fichier avec des onglets, il y a une macro présente à l'intérieur qui me copie 52 fois la feuille (semaine par semaine) pour info.

Merci par avance
Cordialement
Christophe.
 

Pièces jointes

  • Matrice SEMAINE.zip
    61.4 KB · Affichages: 128

Tophe2

XLDnaute Impliqué
Re : Protéger un onglet pour empêcher son ouverture

Re,

Je suis en train de le tester sur ton fichier "usernamefeuillesvisibles" et c'est sur celui là qu'il y a le code erreur je n'ai pas tester sur le vrai puisque cela ne fonctionne pas pour l'instant en tout cas j'ai un message d'erreur. Mais il ne me semble pas qu'il y ait un mot interdit. Mais si tel était le cas il ne fonctionnerait pas chez toi.

Je continue à chercher si une aide ou proposition je prends.
Bonne soirée
Christophe.
 

kjin

XLDnaute Barbatruc
Re : Protéger un onglet pour empêcher son ouverture

Bonsoir, bonsoit Lii,
Désolé pour la méprise entre Application et Environ...
Dans ton code, supprime cette ligne
Code:
Sheets(Environ("username")).Visible = True
Cette feuille n'existe pas !
Le nom de la feuille n'est pas celui du User (d'où le bug) mais celui contenu dans la colonne B, au regard du User, si toutefois on est toujours sur ce principe.
Donc si je reprends le code de Lii et à condition que la feuille contenant les User soit nommée "Admin"
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.ScreenUpdating = False
  For s = 1 To Sheets.Count
    If Sheets(s).Name <> "Feuil1" Then Sheets(s).Visible = xlVeryHidden
  Next
Application.ScreenUpdating = True

End Sub

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Sheets("Admin")
    For i = 2 To Sheets("Admin").Range("A6500").End(xlUp).Row
        If UCase(.Cells(i, 1)) = UCase(Environ("UserName")) Then
        Sheets(.Cells(i, 2).Text).Visible = True
        End If
    Next
End With
Application.ScreenUpdating = True

End Sub
La feuille1 est necessaire car 1 feuille au moins doit être visible (j'avais créé une feuille accueil à cet effet)
Pour la question concernant le nom des comptes, il y a plusieurs manières de les lister. QQ précisions sont nécessaires concernant ta version windows et réseau
A+
kjin
 
Dernière édition:

Tophe2

XLDnaute Impliqué
Re : Protéger un onglet pour empêcher son ouverture

Bonjour kjin, Lii et le forum

Cela fonctionne correctement, pour les informations sur la version de windows et le réseau je me renseigne dès que possible.

Edit : Est il possible d'inclure la copie du thisworkbook lors du lancement de la macro "CopieSemaine".

Bonne journée et merci à vous deux
A plus tard
Christophe
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel