Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Protection de plages en fonction de l'utilisateur

3 réponses
Avatar
Patrick Bastard
Bonjour à tous.

Dans un classeur appelé à être partagé,
Plusieurs plages nommées,
Plusieurs utilisateurs.

Mon but : n'autoriser la modification d'une plage donnée qu'à un utilisateur
défini.

Je pense avoir trouvé le principe :
tout protéger, et ne déprotéger la zone autorisée qu'en saisissant un mot de
passe (différent pour chacun)

Je teste dans un premier temps avec une boite de dialogue avec 2 boutons
(oui, non)
mais je plante.

Pouvez-vous m'aider à corriger le code ci-dessous (en partie écrit avec
l'enregistreur), pour que je comprenne où j'ai commis une erreur ?

Ce sera avec plaisir ;-) que je prendrai connaissance de vos observations.

Merci d'avance,

Le code (dans la feuille)

Sub Message()
msg = "Oui ou Non"
' le message.
Style = vbYesNo + vbDefaultButton1
' les boutons.
Title = "Bienvenue"
' les titres.
Réponse = MsgBox(msg, Style, Title)
If Réponse = vbYes Then
' Si Oui .
ActiveSheet.Unprotect
Application.Goto Reference:="Deux"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Application.Goto Reference:="Un"
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Else
' Si Non.
ActiveSheet.Unprotect
Application.Goto Reference:="Un"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Application.Goto Reference:="Deux"
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True ' Accomplit une autre chose.
End If
End Sub



--
Bien cordialement,
=====================================
P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse

3 réponses

Avatar
JpPradier
Bonjour Patrick

Tu protege la feuille avant de faire les modifs sur la 2e zone, c'est pour ça que ça plante.
Ensuite, si tu choisit une zone, il faut reproteger l'autre. Ci dessous ta proc corrigée.

j-p

Sub Message()
msg = "Oui ou Non"
' le message.
Style = vbYesNo + vbDefaultButton1
' les boutons.
Title = "Bienvenue"
' les titres.
Réponse = MsgBox(msg, Style, Title)
If Réponse = vbYes Then
' Si Oui .
ActiveSheet.Unprotect
Application.Goto Reference:="Deux"
Selection.Locked = True
Selection.FormulaHidden = True
Application.Goto Reference:="Un"
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
' Si Non.
ActiveSheet.Unprotect
Application.Goto Reference:="Un"
Selection.Locked = True
Selection.FormulaHidden = True
Application.Goto Reference:="Deux"
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
' Accomplit une autre chose.
End If
End Sub
Avatar
JpPradier
Ouh là : Tu protègeS et tu choisiS, ce sera mieux

j-p
Avatar
Patrick Bastard
Bonjour, *Jean Pascal*.


Une nouvelle fois, merci.

Bien cordialement,

Patrick

Ci dessous ta proc corrigée.

j-p

Sub Message()
msg = "Oui ou Non"
' le message.
Style = vbYesNo + vbDefaultButton1
' les boutons.
Title = "Bienvenue"
' les titres.
Réponse = MsgBox(msg, Style, Title)
If Réponse = vbYes Then
' Si Oui .
ActiveSheet.Unprotect
Application.Goto Reference:="Deux"
Selection.Locked = True
Selection.FormulaHidden = True
Application.Goto Reference:="Un"
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True Else
' Si Non.
ActiveSheet.Unprotect
Application.Goto Reference:="Un"
Selection.Locked = True
Selection.FormulaHidden = True
Application.Goto Reference:="Deux"
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True ' Accomplit une autre chose.
End If
End Sub