Macro Unhide col. avec password dans une feuille protegee
Bonjour à tous!
Je ne suis vraiment mais vraiment pas habitué à utiliser des macros alors je souhaiterais un petit coup de pouce svp :D Je cherche à résoudre un probleme depuis ce matin:
Je fais un petit formulaire pour que des gens puissent "reserver" des reunions telephoniques (Nombres de lignes, Nombres de participants...).
Suivant les infos renseignées, les couts s'affichent en colonne D, qui est hide pour l'utilisateur (car pas d'interet pour lui).
Le formulaire est envoyé au standard, et je veux que la personne puisse Unhide la colonne D grace a une macro avec password et voir ainsi les couts de communications.
Ma feuille de calcul est protegée, l'utilisateur se sert de dropdown list et de quelques champs libres.
J ai cree des macros Hide et Unhide avec password et boutons. D'apres ce que j ai compris, ma macro Unhide doit par exemple contenir les etapes: ActiveSheet.Unprotect/ Unhide / ActiveSheet.Protect. Car sinon je ne pourrais pas afficher la colonne D puisque la feuille est protegée
Correct?
J'en suis la pour l'instant:
Sub HidePS()
Dim MyPassword
MyPassword = InputBox("Please enter password", "Password Prompt", "*******")
'hardcode Password
If MyPassword = "test" Then
MsgBox "Access Granted", vbInformation, "Access"
'
'Call HidePS Macro
ActiveSheet.Unprotect
Columns("D:D").Select
Selection.EntireColumn.Hidden = True
Range("B37").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("B37").Select
Exit Sub
Else
MsgBox "Access denied", vbCritical, "Error"
Exit Sub
End If
End Sub
Cette macro Unhide fonctionne presque bien:
- demande de password pour la macro
- mais ensuite demande de password pour Unprotect la feuille
- affichage de la colonne D
- les cellules de la feuille sont protegees (bizarre ?)
- mais il suffit de cliquer sur le bouton "Unprotect sheet" pour la dévérouller la feuille.
Je crois que mon soucis est que je me mélange un peu entre le password de la macro et celui de la feuille de calcul :D Je ne veux pas devoir entrer 2 passwords.
Comment insérer automatiquement le vérrouillage/dévérouillage de la feuille dans la macro pour que cela soit transparent pour la personne au standard? Elle doit simplement entre le password relatif a la macro et la feuille doit rester protegee tout le tps.
Merci D'avance.
/Tom
Edit: Excel 2007 utilisé mais le formulaire doit fonctionner sur Excel 2003 egalement.
Bonjour nordik
Si j'ai bien compris ton problème, tu as un mot de passe pour éxécuter ta macro. Mais si tu veux que l'utilisateur ne puisse pas oter la protection, il faut que tu mettes le mot de passe sur la méthode protect de activesheet, donc dans ton code tu changes
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=Truepour
ActiveSheet.Protect Password=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=TrueQuand tu appelleras la méthode UnProtect il faut que tu utilises aussi ce mot de passe.
Merci bien Math, j'ai l'impression que c est cela.
Je test ca demain.
Bonjour, les macros fonctionnent parfaitement maintenant. La feuille de calcul reste verrouillee. Merci bien Math.
Je mets ci-dessous le code, cela peut tjrs servir a quelqu un:
Sub UnhidePS()
Dim MyPassword
MyPassword = InputBox("Please enter password", "Password Prompt", "*******")
'hardcode Password
If MyPassword = "unhide" Then
MsgBox "Access Granted", vbInformation, "Access"
'
'Call UnhidePS Macro
ActiveSheet.Unprotect Password:="test"
Columns("C:E").Select
Range("C5").Activate
Selection.EntireColumn.Hidden = False
Range("B37").Select
ActiveSheet.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
Exit Sub
Else
MsgBox "Access denied", vbCritical, "Error"
Exit Sub
End If
End Sub
Sub HidePS()
Dim MyPassword
MyPassword = InputBox("Please enter password", "Password Prompt", "*******")
'hardcode Password
If MyPassword = "hide" Then
MsgBox "Access Granted", vbInformation, "Access"
'
'Call HidePS Macro
ActiveSheet.Unprotect Password:="test"
Columns("D:D").Select
Selection.EntireColumn.Hidden = True
Range("B37").Select
ActiveSheet.Protect Password:="test"
Range("B37").Select
Exit Sub
Else
MsgBox "Access denied", vbCritical, "Error"
Exit Sub
End If
End Sub
Bonne journee !
Bonjour Nordik,
tant mieux si on a pu t'aider,
oublie pas de mettre [Résolu] a ton post. ( combo box en bas a gauche )