Protéger l'affichage d'une feuille VBA

ThorVince

XLDnaute Nouveau
Bonjour,

J'utilise actuellement la macro ci-dessous qui fonctionne très pour Afficher/masquer les feuilles comportant le même nom que la cellules sur laquelle j'effectue un clic droit. (exemple en PJ)

Cependant j'aimerais mettre un mot de passe sur l’affichage des feuilles, j'ai testé plusieurs solutions mais je ne trouve pas ...
Il doit falloir rajouter une condition dans ces lignes mais je ne sais pas lesquelles ...

Sheets(CStr(Target.Value)).Visible = -1
Sheets(CStr(Target.Value)).Select

Quelqu'un pourrait-il m'aider ?

Par avance merci beaucoup ?
Cordialement,

Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C73:C83")) Is Nothing Then
Cancel = True
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Not FeuilExist(CStr(Target.Value)) Then
MsgBox "Feuille inéxistante", vbCritical
Exit Sub
Else
Sheets(CStr(Target.Value)).Visible = -1
Sheets(CStr(Target.Value)).Select
End If
End If
If Not Intersect(Target, Range("D73:D83")) Is Nothing Then
Cancel = True
If Target = "" Then Exit Sub
If Not FeuilExist(CStr(Target.Value)) Then
MsgBox "Feuille inéxistante", vbCritical
Exit Sub
Else
Sheets(CStr(Target.Value)).Visible = 2
End If
End If
End Sub
 

Pièces jointes

  • test2.xlsm
    18.6 KB · Affichages: 24
  • test2.xlsm
    18.6 KB · Affichages: 29
  • test2.xlsm
    18.6 KB · Affichages: 31

Robert

XLDnaute Barbatruc
Repose en paix
Re : Protéger l'affichage d'une feuille VBA

Bonsoir ThorVince, bonsoir le forum,

J'ai modifié ton fichier pour n'utiliser que la colonne C. Les feuilles masquées s'affichent en rouges. Le clic du bouton droit Masque l'onglet si il est affiché et Affiche l'onglet si il est masqué. Le mot de passe est "mdp" tu adapteras...
Le code :

Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C2:C3")) Is Nothing Then
    Cancel = True
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    If Not FeuilExist(CStr(Target.Value)) Then
        MsgBox "Feuille inéxistante", vbCritical
        Exit Sub
    Else
        Sheets(CStr(Target.Value)).Visible = IIf(Sheets(CStr(Target.Value)).Visible = True, False, True)
        Sheets(CStr(Target.Value)).Protect Password:="mdp"
        On Error Resume Next
        Sheets(CStr(Target.Value)).Select
        Target.Interior.ColorIndex = IIf(Sheets(CStr(Target.Value)).Visible = True, xlNone, 3)
    End If
End If
End Sub
Le fichier :

[Édition]
Bonsoir Zeltron on s'est croisé...
 

Pièces jointes

  • ThorVince_v01.xlsm
    21.3 KB · Affichages: 33

Discussions similaires