Proger feuille excel et autoriser filtres
Résolu
marie
-
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je viens de faire une base de données et lors de la protection des feuilles , le filtre automatique n'est plus accessible.
Si quelqu'un peu m'aider !
Sub ProtegeTout()
For Each Feuil In Application.Sheets
Feuil.Protect "lilop16", True, True, True
Feuil.EnableAutoFilter = True
Next Feuil
End Sub
marie
je viens de faire une base de données et lors de la protection des feuilles , le filtre automatique n'est plus accessible.
Si quelqu'un peu m'aider !
Sub ProtegeTout()
For Each Feuil In Application.Sheets
Feuil.Protect "lilop16", True, True, True
Feuil.EnableAutoFilter = True
Next Feuil
End Sub
marie
A voir également:
- Proger feuille excel et autoriser filtres
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Si et excel - Guide
- Verrouiller cellule excel sans verrouiller la feuille - Guide
5 réponses
J'ai en parti résolu mon souci mais il me reste encore a pouvoir utiliser le filtre croissant et décroissant qui lui ne fonctionne pas
J'ai mis le code dans ThisWorkbook
Feuil1 étant la feuille où le filtre est appliqué.
Private Sub Workbook_Open()
Feuil1.EnableAutoFilter = True
Feuil1.Protect Contents:=True, UserInterfaceOnly:=True
End Sub
Que dois je ajouter ?
Si quelqu'un peu m'aider !
J'ai mis le code dans ThisWorkbook
Feuil1 étant la feuille où le filtre est appliqué.
Private Sub Workbook_Open()
Feuil1.EnableAutoFilter = True
Feuil1.Protect Contents:=True, UserInterfaceOnly:=True
End Sub
Que dois je ajouter ?
Si quelqu'un peu m'aider !
Bonsoir,
Malheureusement ce n'est pas possible (en Excel 2003, les versions au dela je n'ai pas testé). Lorsqu'une feuille est protégée, même si le filtre automatique est autorisé, seules les selections de valeurs individuelles fonctionnent. Car cela revient à masquer ou afficher des lignes.
Par contre, le tri ne fonctionne pas car un tri est une modification des cellules et comme elles sont vérouillées ce n'est pas possible.
La seule solution serait à mon avis de créer un bouton spécial ou plusieurs pour le tri croissant (ou décroissant) qui lance une macro. Cette macro déprotége, effectue le tri et reprotége.
Dis nous vers quelle solution tu envisages d'aller.
A+
Cordialement,
Malheureusement ce n'est pas possible (en Excel 2003, les versions au dela je n'ai pas testé). Lorsqu'une feuille est protégée, même si le filtre automatique est autorisé, seules les selections de valeurs individuelles fonctionnent. Car cela revient à masquer ou afficher des lignes.
Par contre, le tri ne fonctionne pas car un tri est une modification des cellules et comme elles sont vérouillées ce n'est pas possible.
La seule solution serait à mon avis de créer un bouton spécial ou plusieurs pour le tri croissant (ou décroissant) qui lance une macro. Cette macro déprotége, effectue le tri et reprotége.
Dis nous vers quelle solution tu envisages d'aller.
A+
Cordialement,
Re Bonsoir,
Aprés réflexion, je propose la solution suivante :
Dans ThisWorkbook garder le code (avec un mot de passe c'est mieux) :
Dans un module (Module1 par exemple) mettre la déclaration :
Et dans le code de la Feuil1 mettre cette macro :
Ainsi le Filtre automatique fonctionne comme avant mais en plus si l'on fait un clic droit sur une entête de colonne on tri de manière croissante et si on fait à nouveau un clic droit on tri de manière décroissante.
Me dire si cela peut convenir
Aprés réflexion, je propose la solution suivante :
Dans ThisWorkbook garder le code (avec un mot de passe c'est mieux) :
Private Sub Workbook_Open() Feuil1.EnableAutoFilter = True Feuil1.Protect Password:="lilop16", Contents:=True, UserInterfaceOnly:=True End Sub
Dans un module (Module1 par exemple) mettre la déclaration :
Public SensTri(1 To 50) As Integer
Et dans le code de la Feuil1 mettre cette macro :
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Row = 1 Then ActiveSheet.Unprotect "lilop16" If SensTri(Target.Column) = 0 Then SensTri(Target.Column) = 1 Else SensTri(Target.Column) = 3 - SensTri(Target.Column) End If Cells.Select Selection.Sort Key1:=Target, Order1:=SensTri(Target.Column), Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Target.Select ActiveSheet.EnableAutoFilter = True ActiveSheet.Protect Password:="lilop16", Contents:=True, UserInterfaceOnly:=True End If Cancel = True End Sub
Ainsi le Filtre automatique fonctionne comme avant mais en plus si l'on fait un clic droit sur une entête de colonne on tri de manière croissante et si on fait à nouveau un clic droit on tri de manière décroissante.
Me dire si cela peut convenir
Bonsoir,
Non , ça ne fonctionne pas , j'ai les filtres par cagoteries, mais pas les filtres croissant .
Voir message de ce matin : 8 sept. 2011 à 08:04
Je suis arrivée à filtrer a l'ouverture du fichier ce qui me convient parfaitement , mais le soucis c'est qu'il me tri aussi les titres .
Je vais continuer dans ce sens la, et essayer de trouver ou est le soucis.
Si vous avez des idées ! je suis preneuse :)
merci d'avance
Non , ça ne fonctionne pas , j'ai les filtres par cagoteries, mais pas les filtres croissant .
Voir message de ce matin : 8 sept. 2011 à 08:04
Je suis arrivée à filtrer a l'ouverture du fichier ce qui me convient parfaitement , mais le soucis c'est qu'il me tri aussi les titres .
Je vais continuer dans ce sens la, et essayer de trouver ou est le soucis.
Si vous avez des idées ! je suis preneuse :)
merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci pllas31 . j'ai un peu avancé . J'ai régler en partie mon soucis en faisant un tri a l'ouverture du fichier mais le problème c qu'il me tri la 1 des ligne de nom avec.
Le tri doit se faire a partir de la ligne 3 et je ne sait pas ce qu'il faut que je change sur mes codes ci dessous:
Private Sub Workbook_Open()
Sheets("BD").Select
Dim mdp As String
Application.ScreenUpdating = False
ActiveSheet.Unprotect "lilop16"
On Error Resume Next
Columns("A:BL").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Selection.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd
Feuil1.EnableAutoFilter = True
ActiveSheet.Protect "lilop16", UserInterfaceOnly:=True
Application.ScreenUpdating = True
Feuil1.Protect Contents:=True, UserInterfaceOnly:=True
Sheets("Nouveau").Select
Range("D5").Select
End Sub
Actuellement il fait bien le tri croissant de la colonne 3 mais place tout sur la ligne 2 ! alors il doit tout mettre a partir de la ligne3
Ce doit être tout bête mais je ne trouve pas
merci d'avance
Le tri doit se faire a partir de la ligne 3 et je ne sait pas ce qu'il faut que je change sur mes codes ci dessous:
Private Sub Workbook_Open()
Sheets("BD").Select
Dim mdp As String
Application.ScreenUpdating = False
ActiveSheet.Unprotect "lilop16"
On Error Resume Next
Columns("A:BL").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Selection.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd
Feuil1.EnableAutoFilter = True
ActiveSheet.Protect "lilop16", UserInterfaceOnly:=True
Application.ScreenUpdating = True
Feuil1.Protect Contents:=True, UserInterfaceOnly:=True
Sheets("Nouveau").Select
Range("D5").Select
End Sub
Actuellement il fait bien le tri croissant de la colonne 3 mais place tout sur la ligne 2 ! alors il doit tout mettre a partir de la ligne3
Ce doit être tout bête mais je ne trouve pas
merci d'avance