Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Aide code VBA verrouillage de la structure d'un onglet

laurent67

XLDnaute Junior
Bonjour,

J'ai un souci avec mon code VBA pour verrouiller la structure des onglets tout en laissant les personnes autoriser à saisir les données dans l'onglet. Pouvez-vous m'aider svp?

le code va chercher dans l'onglet paramètre les personnes autorisées à la saisi uniquement représenté par un 0 alors le code masques certaines colonne et verrouille la structure de l'onglet.

VB:
Sub AfficheFeuilles(Utilisateur As String)
Dim Col As Byte, i As Byte, Lig As Integer, sh As Worksheet, LCAse As String

With Sheets("parametrage") 'dans la feuille paramétrage
    'comme on va boucler de la colonne 4 à la dernière colonne, on stocke le n° de la dern colonne :
    Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
    'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
    Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
    'boucle à partir de 4 car Feuil1 toujours affichée
    For i = 3 To Col
        If UCase(.Cells(Lig, i)) = "1" Or UCase(.Cells(Lig, i)) = "0" Then 'si la valeur de la cellule est différente de 0 ou 1
            Sheets(.Cells(1, i).Value).Visible = True 'on affiche la feuille
        Else
            Sheets(.Cells(1, i).Value).Visible = xlSheetVeryHidden 'sinon on la masque
        End If
         If UCase(.Cells(Lig, i)) = "1" Then 'si la valeur de la cellule est "1"
             With Sheets(.Cells(1, i).Value) 'avec la feuille dont le nom est en 1ere ligne on la dévérouille et on affiche toutes les colonnes O:U
            .Unprotect Password:="admin19"
            .Columns("O:U").EntireColumn.Hidden = False
            End With
         Else
              If UCase(.Cells(Lig, i)) = "0" Then 'si on trouve un "0" dans la cellule
                With Sheets(.Cells(1, i).Value) 'avec la feuille dont le nom est en 1ere ligne
                .Unprotect Password:="admin19" 'Déverrouille la feuille
                .Columns("O:U").EntireColumn.Hidden = True 'Masque les colonnes selectionnées
                .Protect Password:="admin19", DrawingObjects:=True, contents:=True, AllowInsertingRows:=True, AllowFormattingRows:=True _
                            , AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:=True, UserInterfaceOnly:=True  'on protège par mdp l'affichage des colonnes "O:U"
                .EnableSelection = xlNoRestrictions
                End With
              End If
         End If
    Next i
End With
End Sub
 

GALOUGALOU

XLDnaute Accro
bonsoir laurent 67
vous ne donner pas toutes les informations, dur dur de vous aider
sur la base de votre problématique ci-joint un classeur qui devrait vous permettre de comprendre et trouver la solution à votre projet
un tuto
cdt
galougalou
 

Pièces jointes

  • V4.xlsm
    38.9 KB · Affichages: 8

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…