Proger feuille excel et autoriser filtres
Résolu/Fermé
marie
-
6 sept. 2011 à 20:03
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 8 sept. 2011 à 23:58
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 8 sept. 2011 à 23:58
A voir également:
- Proger feuille excel et autoriser filtres
- Si et excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Word et excel gratuit - Guide
- Liste déroulante 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 !
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
Modifié par pilas31 le 8/09/2011 à 02:30
Modifié par pilas31 le 8/09/2011 à 02:30
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,
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
8 sept. 2011 à 02:24
8 sept. 2011 à 02:24
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
Lilop16
Messages postés
4
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
8 septembre 2011
8 sept. 2011 à 08:43
8 sept. 2011 à 08:43
Je vérifie tout ça ce soir ... et vous tiens au courant. . bonne journée
Lilop16
Messages postés
4
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
8 septembre 2011
8 sept. 2011 à 18:27
8 sept. 2011 à 18:27
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
Lilop16
Messages postés
4
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
8 septembre 2011
8 sept. 2011 à 19:14
8 sept. 2011 à 19:14
J'ai résolu mon problème ...
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
8 sept. 2011 à 23:58
8 sept. 2011 à 23:58
Bonsoir,
Désolé, je n'ai pas pu venir sur le forum depuis hier. Content que le problème soir résolu.
Bonne continuation
Désolé, je n'ai pas pu venir sur le forum depuis hier. Content que le problème soir résolu.
Bonne continuation
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
Modifié par pilas31 le 8/09/2011 à 02:28
Modifié par pilas31 le 8/09/2011 à 02:28
J'ai redirigé vers le forum Bureautique car il y a plus de helpeurs compétants en Excel et VBA
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Lilop16
Messages postés
4
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
8 septembre 2011
8 sept. 2011 à 08:04
8 sept. 2011 à 08:04
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