[excel/vba] protection d'une feuille

Résolu/Fermé
antic80 Messages postés 4751 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 - 29 oct. 2008 à 14:41
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 12 mai 2010 à 16:12
Bonjour,

j'ai fait un petit programme afin de gérer des données.

Etant donné que ce programme va etre consulté par plusieurs personnes j'aimerais protéger la feuille contenant les données par un mot de passe.

Ce mot de passe ne seras transmis qu'a quelques personnes afin qu'elles puissent saisir de nouvelles données.

J'aimerais donc faire une macro qui demanderais le mot de passe et quand on quitte excel il faudrait que la protection se remette automatiquement.

merci pour vos suggestions et vos réponses
A voir également:

4 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 oct. 2008 à 15:46
Salut,

Crée un module macro clic droit sur l'onglet de ta feuille/visualiser le code/ insertion/module dans ce module colles ce code

Dans cet exemple le mot de passe est titi et doit être changé suivant tes besoins dans la ligne
If textetitre = "titi" Then


Sub Déprotection()
textetitre = InputBox(Title:="Bonjour", _
Prompt:="Veuillez Saisir le code d'accès.")
If textetitre = "titi" Then
Worksheets(1).Unprotect Password:="titi"
Else
msg = "Mot de passe incorrect."
StyleBoîteDialogue = vbOKOnly + vbQuestion
Title = "Accès réglementé."
réponse = MsgBox(msg, StyleBoîteDialogue, Title)
Exit Sub
End If
End Sub

Sur ta feuille de calcul crée un bouton associé à cette macro pour déprotéger ta feuille.

Ensuite pour que ta feuille se protège automatiquement à la fermeture de ton fichier
Clic droit sur l’onglet de feuille, double clic sur thisworkbook une feuille blanche s’ouvre, colle le code ci-dessous. Attention si tu change le mot de passe « titi à la déprotection, il faut également le changer à la protection, et n’oublis pas de mettre to mot de passe entre :""

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets(1).Protect Password:="titi"
End Sub

Et pour terminer afin que personne que toi n'accède au module macro et donc découvrir ou changer le mot de passe il convient de protéger le module VBA par un mot de passe. Mais attention de ne pas multiplier les mots des passes afin de ne pas les oublier, bien qu’il existe des logiciels de déprotection.

A+
3
antic80 Messages postés 4751 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
29 oct. 2008 à 17:09
merci infiniment pour cette réponse Mike-31

clair et précis, parfait pour moi
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 oct. 2008 à 17:11
N'oublis pas de mettre ton statut en résolu

Merci

A+
0
salut
j'ai suivi tout ce que t'a dit mais en fin quand j'ouvre le fichier je trouve que la feuille n'est pas proteger, on peut faire des modification dans cette feuille, malgré que la macro s'execute normal apartir de sont bouton.

merci pour tout
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
12 mai 2010 à 16:12
Salut,

Tu aurais du ouvrir ta propre discussion et expliquer ton problème.
Cette discussion à été ouverte par Antic80 et son statut est résolu.

Enfin, le code que j'ai donné dans ce topic consistait à contrôler les personnes autorisées à apporter des modifications sur une feuille d'un classeur. pour cela il faut coller ce code dans un module

Sub Déprotection()
textetitre = InputBox(Title:="Bonjour", _
Prompt:="Veuillez Saisir le code d'accès.")
If textetitre = "titi" Then
Worksheets(1).Unprotect Password:="titi"
Else
msg = "Mot de passe incorrect."
StyleBoîteDialogue = vbOKOnly + vbQuestion
Title = "Accès réglementé."
réponse = MsgBox(msg, StyleBoîteDialogue, Title)
Exit Sub
End If
End Sub

et celui ci dans la Thisworkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets(1).Protect Password:="titi"
End Sub

le mot de passe pour accéder aux modifications de la feuille est titi.
Pour appliquer ce code à plusieurs feuilles ou une feuille différente que la feuille 1 il faut revoir le code
0