Protection feuille Excel - Cas particuliers

Résolu/Fermé
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011 - 8 août 2011 à 12:21
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 - 9 août 2011 à 10:07
Bonjour,

Je suis stagiaire en Entreprise et je viens de créer une base de donnée Excel pour créer un centre de ressources documentaires en ligne.
Comme cette base de données sera en ligne, j'aurais voulu la protéger mais le probléme est que je ne veux pas tout protéger.
J'ai regardé sur des forums, mais il n'y a pas de réponses qui me correspondent vraiment.

Je m'explique. J'ai une premiére feuille d'accueil dans laquelle j'aurais juste voulu conserver l'acces aux liens pour les clients (Un lien contact et un autre vers un Guide)

Ensuite j'ai une deuxiéme feuille et c'est celle la qui me pose le plus de problémes. Dans cette feuille, j'ai un moteur de recherche par mots clés (qui en fait séléctionne des mots clés dans les titres). Ceci selectionne des colonnes (Description du document, Sujet du document...). Les clients peuvent également choisir de chercher un document en utilisant des filtres Par exemple, le client peut choisir de sélectionner les filtres ou alors de rentrer un mot clés mais la Table Excel est la meme. Les titres sont des Hyperlinks vers des PDFS.
Ainsi, j'aurais voulu protéger aussi cette deuxiéme feuille mais laisser aux clients la possibilité d'utiliser le moteur de recherche et les filtres et d'ouvrir les hyperlinks.

Merci par avance,

Charlotte
A voir également:

10 réponses

Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
8 août 2011 à 12:28
Bonjour,

Quand on protège une feuille, toutes les cellules sont verrouillées par défaut, pour laisser la possibilité de modifier certaines cellules, il faut donc déverrouiller ces cellules en les sélectionnant, clique droit>Format de cellule>Onglet Protection et décocher Verrouillée.

Ensuite, dans le menu Outils>Protection>Protéger la feuille, il a plein d'options, comme le choix de laisser l'utilisation des filtres, ou des hyperliens.

Je ne sais pas si c'est ce que tu cherches précisément, mais à ta place je fouillerai de ce côté.
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 12:44
Merci de cette si rapide réponse,
En effet c'est ce que je souhaite pour une partie. Mais mon probléme est que une fois cela réalisé, mon bouton Textbox que j'ai créér (contenant une macro) est impossible á utiliser et me demande de le débuger...
Et cela méme si je vais dans les propriétés du bouttons et que je le dévérouille....
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
8 août 2011 à 12:51
Alors peut-être dans la macro de ton bouton, au début déprotéger la feuille, et remettre la protection à la fin ?

Sub Pouetpouet ()

ActiveWorkbook.Unprotect
'Ta Macro
ActiveWorkbook.Protect

End Sub
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 13:00
Merci!! Je suis sure que cela dois marcher mais ne susi pas tres douée en Macros. Ma nouvelle Macro est celle ci, mais cela ne marche pas....

Sub Pouetpouet()

ActiveWorkbook.Unprotect
Private Sub BtnConvtxt_Click()
For Each c In Selection
If IsNumeric(c) Then c.Value = "'" & c.Value
Next c
End Sub

Private Sub BtnSuppFiltres_Click()
Tbx1.Text = ""
Selection.AutoFilter Field:=1
Tbx2.Text = ""
Selection.AutoFilter Field:=2
Tbx3.Text = ""
Selection.AutoFilter Field:=3
Tbx4.Text = ""
Selection.AutoFilter Field:=4
End Sub

Private Sub Label1_Click()

End Sub

Private Sub Tbx1_Change()
Selection.AutoFilter Field:=1, Criteria1:="=*" & Tbx1.Text & "*", Operator:=xlAnd
End Sub

Private Sub Tbx1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx1.Text = ""
Selection.AutoFilter Field:=1
End Sub

Private Sub Tbx2_Change()
Selection.AutoFilter Field:=2, Criteria1:="=*" & Tbx2.Text & "*", Operator:=xlAnd
End Sub

Private Sub Tbx2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx2.Text = ""
Selection.AutoFilter Field:=2
End Sub

Private Sub Tbx3_Change()
Selection.AutoFilter Field:=3, Criteria1:="=*" & Tbx3.Text & "*", Operator:=xlAnd
End Sub

Private Sub Tbx3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx3.Text = ""
Selection.AutoFilter Field:=3
End Sub

Private Sub Tbx4_Change()
Selection.AutoFilter Field:=4, Criteria1:="=*" & Tbx4.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx4_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx4.Text = ""
Selection.AutoFilter Field:=4
End Sub
ActiveWorkbook.Protect

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 13:20
Peut etre qu'il faut remettre cette formule á plusieurs endroits ?
J'essaye différentes solutions mais me demande toujours de Débuguer...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
8 août 2011 à 13:24
Salut,
En fait, la sub pouetpouet de Morghotal était juste un exemple.
Tu dois, pour chaque macro qui utilise des feuilles protégées utiliser :
ActiveWorkbook.Unprotect 'en début de code après Sub ... ou Private Sub...
ActiveWorkbook.Protect 'en fin de code avant End Sub
comme te le montrais Morgothal (que je crois bien souvent aujourd'hui ;-) dans son exemple.
Pour ton cas, par exemple :

Private Sub BtnConvtxt_Click() 
ActiveWorkbook.Unprotect 
For Each c In Selection 
If IsNumeric(c) Then c.Value = "'" & c.Value 
Next c 
ActiveWorkbook.Protect 
End Sub 

Private Sub BtnSuppFiltres_Click() 
ActiveWorkbook.Unprotect 
Tbx1.Text = "" 
Selection.AutoFilter Field:=1 
Tbx2.Text = "" 
Selection.AutoFilter Field:=2 
Tbx3.Text = "" 
Selection.AutoFilter Field:=3 
Tbx4.Text = "" 
Selection.AutoFilter Field:=4 
ActiveWorkbook.Protect
End Sub 

etc...
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 13:36
Mais il me demande encore de Débuguer en appliquant ceci pour chaque macros....
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 8/08/2011 à 13:47
Quel est le type/le message de l'erreur ? Peut être qu'on ne cherche pas du bon côté ...
Et lorsque tu cliques sur Débuguer, quelle est la ligne surlignée en jaune?
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 14:31
Run time error 1004, Je ne peux pas utiliser cette commande sur une feuille protegée. Proposition "fin", "Debuguer", "help"
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 14:33
Il s'aggit de la ligne commencant par Selection.Autofilter ci dessous.

Private Sub Tbx1_Change()
ActiveWorkbook.Unprotect
Selection.AutoFilter Field:=1, Criteria1:="=*" & Tbx1.Text & "*", Operator:=xlAnd
ActiveWorkbook.Protect
End Sub
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 8/08/2011 à 14:39
Et en essayant juste de déprotéger la feuille sans passer par ta macro?

En reprenant mon exemple plus haut,

Sub Pouetpouet () 
ActiveWorkbook.Unprotect 
End Sub


Juste ces 3 lignes,
Si ça ne passe pas, il faudrait essayer de déprotéger une seule des deux feuilles, celle concernée par la macro, en faisant :
'au début de la macro : 
Sheets("TaFeuille").Select 
ActiveSheet.Unprotect 

'à la fin : 
ActiveSheet.Protect
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 14:44
en supprimant la ligne qui ne fonctionne pas dans la macro, je peux écrire dans le boutton mis évidemment il ne marche plus.
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 14:53
SA FONCTIONNNNNNEEEEE!!!!!!!!!!!!!!!!!!!!
MERCCCCCCIIIIIIIIIIII!!!!!
La premiere solution était finalement la bonne. J'ai recopié les macros depuis le début et maintenant cela marche!!!!! Vraiment merci pour tous ces conseils !!!!!!!!!!
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 8/08/2011 à 15:08
Ah bien !
N'oublie pas de mettre en résolu alors :)

Merci à Pijaku !
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
8 août 2011 à 14:57
Ah je crois avoir trouvé la solution :
Il faut en fait activer les filtres automatiques à l'ouverture de ton classeur, donc dans une Private Sub Workbook_Open (du code qui s'éxecutera à l'ouverture du classeur).
Il faudrait donc placer tout ton code (sans les ActiveWorkbook.Protect/Unprotect) dans un module (clique droit dans la liste de feuilles en haut a gauche de l'éditeur VBA, Insertion>Module), et dans la feuille Workbook, choisir à la place de "(Général)" --> Workbook

Il devrait écrire tout seul :

Private Sub Workbook_Open()
End Sub


et tu écrirais dans cette sub :

ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True


Tu actives donc les filtres automatiques et tu protèges ton classeur.

J'attend ton retour pour savoir si cela fonctionne :)
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 15:25
A Non en fait cela ne marche plus, avec la premiere solution je peux écrire dans la boite de texte et cela me séelctionne bien mes colonnes mais apres je n¦ai plus l¦acces aux filtres.
Je ne comprends pas bien la deuxieme solution.. Ou trouve t-on la Private Sub Workbook-Open. Il n'y a rien aui s'ouvre pour moi quand j'ouvre mon classeur. J'ai ouvert un module mis la formule sans les codes mais je n'ai pas le choix Workbook, uniquement General en haut á gauche.... Désolé ce sont mes premieres confrontations avec les macros...
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
8 août 2011 à 15:52
Essaye d'écrire ceci dans ta page Workbook et le reste de ta macro sur le module créé précedemment :

Private Sub Workbook_Open()
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
End Sub

Ferme et re-ouvre ton classeur pour bien que le procédure évenementielle soit reconnue.
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 16:24
Le probleme est que je ne comprends bien ce qu'est le Workbook... Je ne vois pas trop ce que c'est. On ne peut pas rajouter une ligne á la macro pour qu'elle fonctionne. Juste pour que cela me réactive mes filtres aprés.
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
8 août 2011 à 17:18
Je crois bien avoir trouvé, après tout mes tests, cela fonctionne !
Pour information :
Le Workbook, c'est ton classeur Excel, et le code contenu dans la procédure évenementielle Workbook_Open s'exécutera à l'ouverture de ce classeur.

Lorsque tu protèges ton classeur, ta feuille, il faut bien cocher l'option "Utiliser le filtre automatique".
Et au début de tes macros, tu met bien
ActiveSheet.Unprotect

Pour que la macro puisse s'exécuter, et à la fin de la macro tu insères :
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
ce qui protège ta feuille en autorisant le filtre automatique pour les utilisateurs

J'espère que cette solution est la bonne :)
0
Charlotte.L-SBP Messages postés 12 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 17:49
Apres de nombreux essais. C'est bon tout fonctionne a merveille!!!!!!!!
J'ai compris ce qu'il fallait faire. J'ai mis la macro initiale sans les codes dans ma feuille initiale "Publications". J'ai mis ma macro avec les ActiveSheet.Protect dans un Module et dans le Workbook la formule
Private Sub Workbook_Open()
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
End Sub

Maintenant tout fonctionne. On peut cosnulter ma base de données mais seulement utiliser les filtres liens et recherche de mots.

Ouf !!" Heureusement que les efforts payent!!!

J'ai résolue la question sur le forum.

Merci vraiment d'avoir pris tout ce temps pour me répondre!!!!!!!!
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
9 août 2011 à 10:07
Pas de soucis !
0