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
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
A voir également:
- Protection feuille Excel - Cas particuliers
- Feuille de pointage excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Sites de vente entre particuliers - Guide
- Si et excel - Guide
- Cas ram - Guide
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
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é.
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é.
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
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....
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....
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
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
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
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
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
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
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...
J'essaye différentes solutions mais me demande toujours de Débuguer...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 753
8 août 2011 à 13:24
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 :
etc...
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...
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
8 août 2011 à 13:36
Mais il me demande encore de Débuguer en appliquant ceci pour chaque macros....
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
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?
Et lorsque tu cliques sur Débuguer, quelle est la ligne surlignée en jaune?
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
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"
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
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
Private Sub Tbx1_Change()
ActiveWorkbook.Unprotect
Selection.AutoFilter Field:=1, Criteria1:="=*" & Tbx1.Text & "*", Operator:=xlAnd
ActiveWorkbook.Protect
End Sub
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
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,
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 :
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
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
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.
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
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 !!!!!!!!!!
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 !!!!!!!!!!
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
Modifié par Morgothal le 8/08/2011 à 15:08
Ah bien !
N'oublie pas de mettre en résolu alors :)
Merci à Pijaku !
N'oublie pas de mettre en résolu alors :)
Merci à Pijaku !
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
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 :
et tu écrirais dans cette sub :
Tu actives donc les filtres automatiques et tu protèges ton classeur.
J'attend ton retour pour savoir si cela fonctionne :)
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 :)
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
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...
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...
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
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 :
Ferme et re-ouvre ton classeur pour bien que le procédure évenementielle soit reconnue.
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.
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
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.
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
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
Pour que la macro puisse s'exécuter, et à la fin de la macro tu insères :
J'espère que cette solution est la bonne :)
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:=Truece qui protège ta feuille en autorisant le filtre automatique pour les utilisateurs
J'espère que cette solution est la bonne :)
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
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!!!!!!!!
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!!!!!!!!
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
9 août 2011 à 10:07
Pas de soucis !