Proteger accessibilité feuilles selon utilisateur

Bonjour,

J'ai un fichier composé de plusieurs feuilles. L'accessibilité de ces feuilles dépend du nom de l'utilisateur.

Le code bloque à deux moments.

A l'ouverture (dans le workbook j'ai mis le code en commentaire pour éviter le bug de démarrage.

En fin d'ouverture dans le code "affichefeuille"(moduel6). ca coince dans les deux lignes du FOR

Un code d'acces: Utilisateur= BBB et MdP=BB

Je vous remercie de votre aide

https://www.cjoint.com/c/FBhjrz55lCT

Bonjour,

Tu as des feuilles nommées Feuil2 à Feuil7. L'appel d'autres feuilles déclenchera une erreur, à commencer par Feuil1.

Cordialement.

Bonjour,

je ne comprends pas la réponse.

Dois-je comprendre que si je renomme les feuilles je n'aurai plus ce problème?

Merci

Tseoy

Pas seulement : tu cherches à afficher des feuilles nommées Feuil1 à Feuil10.

Or, Feuil1 n'existe pas, de même les 8, 9 et 10.

Chaque fois que tu veux afficher une feuille qui n'existe pas, tu auras une erreur, logique !

Tes noms de feuilles en ligne 1 de parametrage doivent correspondre à des feuilles existantes.

Bonjour

j'ai rectifié mais ca ne fonctionne pas pour tous les utilisateurs

merci

https://www.cjoint.com/c/FBhlf62SnUT

Apparemment, si !

Bonjour,

sur mon document si je prends utilisateur DDD et MdP DD il bloque ainsi que les autres utilisateurs après.

"impossible de définir la propriété visible du worksheet"

merci de votre aide

tseoy

L'erreur se produit lorsque la procédure tente de masquer la dernière feuille visible, parce qu'un classseur doit toujours avoir au moins une feuille visible.

Correctif mini :

Pour l'ouverture : rendre la feuille prévue visible dès le départ.

Private Sub Workbook_Open()
    Dim Ws As Worksheet
    Worksheets("AAAA").Visible = True
    For Each Ws In ThisWorkbook.Worksheets
        If Ws.Name <> "AAAA" Then Ws.Visible = xlSheetVeryHidden
    Next Ws
    UserForm1.Show
End Sub

Pour la procédure liée mot de passe : rendre visible la dernière feuille au départ (elle sera masquée s'il y a lieu à son rang).

Sub AfficheFeuilles(Utilisateur As String)
    Dim Col As Byte, i As Byte, Lig As Integer
    Worksheets("JJJJ").Visible = True
    With Sheets("parametrage")
        Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
        Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
        For i = 3 To Col
            If UCase(.Cells(Lig, i)) = "X" Then
                Sheets(.Cells(1, i).Value).Visible = True
            Else
                Sheets(.Cells(1, i).Value).Visible = xlSheetVeryHidden
            End If
        Next i
    End With
    Unload UserForm1
End Sub

Cordialement.

Rechercher des sujets similaires à "proteger accessibilite feuilles utilisateur"