Protéger l'affichage d'une feuille VBA

  • Initiateur de la discussion Initiateur de la discussion ThorVince
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

ThorVince

Guest
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😀83")) 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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
509
Retour