bonjour à tous,
...et en particulier à Michel Denis, qui m'a aimablement transmis un code
que ma médiocrité VBAtiste ne parvient pas à faire fonctionner
Je rappelle le but cherché:
envoyer un classeur à 3 interlocuteurs
pour chacun , la feuille est protégée avec un mot de passe personnalisé, et
chacun n'a accès qu'à 2 colonnes, le reste est verrouillé
Ci joint les 3 codes
DANS LE THISWORKBOOKS ça marche
Private Sub Workbook_Open()
'mettre un mot de passe par utilisateur
Sheets("Feuil1").Select
Dim Usager As Variant
OK = True
Do
Usager = Application.InputBox("Votre nom.", "Nom", , , , , , 2)
If Format(Usager) = "False" Then ThisWorkbook.Close
If (Usager = "optéor" Or Usager = "areva" Or Usager = "gtazur") And
Usager <> "" Then
OK = True
Sheets("suivi").Select
Else
MsgBox "Vous ne pouvez pas ouvrir ce fichier."
'Usager = ""
OK = False
End If
Loop Until OK = True
End Sub
DANS LE MODULE 1
Dim Usager As String
'les constantes pour les mots de passe des 3 usagers
Public Const MotUsager = "op"
Public Const MotUsager1 = "ar"
Public Const MotUsager2 = "azur"
DANS LA FEUILLE « suivi »….et là , ça marche pas
Private Sub Worksheet_Activate()
Dim MotDePasse As String
MotDePasse = Application.InputBox("Quel est votre mot de passe ?")
If Format(MotDePasse) = "false" Then
If MotDePasse = "op" Then
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
' 'procédure :Toute la feuille est protégée
With Worksheets("suivi")
'1er usager
If Usager = optéor And Format(MotDePasse) = "true" Then 'MotDePasse = op
Then
'procédure à partir d'enregistrement macro
Range("V3:W86").Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Range("V3").Select
End With
End If
'2ème usager
If Usager = areva And MotDePasse = ar Then
' 'procédure selon poposition Michel Denis
With Worksheets("suivi")
.Unprotect "ar"
.Cells.Locked = False
'Plage de cellules qui doit être accessible
.Range("T1:U86").Locked = True
' .Protect "ar", True, True, True, True
End With
End If
End If
End Sub
Quand le 1er textbox s'affiche pour demander le nom de l'usager, tout
baigne, et je passe à la feuille à protéger
Quand le 2ème textbox s'affiche pour y mettre le code, quelque soit ce que
j'y mets, il accepte et donne accès à la feuille, sans la protèger du tout
Si Michel ou un(e) brillant vbatiste voit ou je merdoie, qu'il n'hésite pas
à être insultant, s'il y a manifestement trop de nullité apparente !!
merci
à+
gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...