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
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
A voir également:

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 !
0
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
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,
0
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
Re Bonsoir,

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
0
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
Je vérifie tout ça ce soir ... et vous tiens au courant. . bonne journée
0
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
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
0
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
J'ai résolu mon problème ...
0
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
Bonsoir,

Désolé, je n'ai pas pu venir sur le forum depuis hier. Content que le problème soir résolu.
Bonne continuation
0
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
J'ai redirigé vers le forum Bureautique car il y a plus de helpeurs compétants en Excel et VBA
0

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
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
0