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