XL 2016 Problème à cause de protection de feuille

scoubidou35

XLDnaute Occasionnel
Bonjour à tous,
J'ai un problème avec mon fichier si je protège une feuille ou plus je ne peux plus utiliser le filtre que j'ai sur la feuille 'sommaire'. J'ai tenté avec des unprotect et protect dans le code de la page sommaire et dans la page protégé mais rien ne change...j'obtiens toujours un message de debogage pour la page sommaire
Merci d'avance.
 

Pièces jointes

  • Fichier pb protection.xlsm
    19.5 KB · Affichages: 6
Solution
Autre solution avec UserInterfaceOnly :
VB:
Private Sub FiltreTableau(Feuille As String, Tableau As String, Année As String)
    With Sheets(Feuille)
        .Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
        If Len(Année) Then
            .ListObjects(Tableau).Range.AutoFilter Field:=1, Criteria1:=Année
        Else
            .ListObjects(Tableau).Range.AutoFilter Field:=1
        End If
    End With
End Sub
On évite ainsi un saut d'écran.

job75

XLDnaute Barbatruc
Bonjour,

Elémentaire :
VB:
Private Sub FiltreTableau(Feuille As String, Tableau As String, Année As String)
    Sheets(Feuille).Unprotect "toto" 'mot de passe à adapter
    If Len(Année) > 0 Then
        Sheets(Feuille).ListObjects(Tableau).Range.AutoFilter Field:=1, Criteria1:=Année
    Else
        Sheets(Feuille).ListObjects(Tableau).Range.AutoFilter Field:=1
    End If
    Sheets(Feuille).Protect "toto" 'mot de passe à adapter
End Sub
A+
 

Pièces jointes

  • Fichier pb protection(1).xlsm
    21.7 KB · Affichages: 2

scoubidou35

XLDnaute Occasionnel
Bonjour,

Elémentaire :
VB:
Private Sub FiltreTableau(Feuille As String, Tableau As String, Année As String)
    Sheets(Feuille).Unprotect "toto" 'mot de passe à adapter
    If Len(Année) > 0 Then
        Sheets(Feuille).ListObjects(Tableau).Range.AutoFilter Field:=1, Criteria1:=Année
    Else
        Sheets(Feuille).ListObjects(Tableau).Range.AutoFilter Field:=1
    End If
    Sheets(Feuille).Protect "toto" 'mot de passe à adapter
End Sub
A+
Merci beaucoup job75,
Ca fonctionne en fait j'utilisais pas la bonne commande car vous utilisez Sheets(Feuille) alors que moi j'utilisai ThisWorkbook.Worksheets (Feuille) mais a priori je n'ai toujours pas compris la différence entre ces deux commandes.
Merci et bonne journée
 

job75

XLDnaute Barbatruc
Autre solution avec UserInterfaceOnly :
VB:
Private Sub FiltreTableau(Feuille As String, Tableau As String, Année As String)
    With Sheets(Feuille)
        .Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
        If Len(Année) Then
            .ListObjects(Tableau).Range.AutoFilter Field:=1, Criteria1:=Année
        Else
            .ListObjects(Tableau).Range.AutoFilter Field:=1
        End If
    End With
End Sub
On évite ainsi un saut d'écran.
 

Pièces jointes

  • Fichier pb protection(2).xlsm
    22 KB · Affichages: 1

scoubidou35

XLDnaute Occasionnel
Mer
Autre solution avec UserInterfaceOnly :
VB:
Private Sub FiltreTableau(Feuille As String, Tableau As String, Année As String)
    With Sheets(Feuille)
        .Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
        If Len(Année) Then
            .ListObjects(Tableau).Range.AutoFilter Field:=1, Criteria1:=Année
        Else
            .ListObjects(Tableau).Range.AutoFilter Field:=1
        End If
    End With
End Sub
On évite ainsi un saut d'écran.
Merci job75
En effet j'avais un saut d'écran j'ai essayé avec Application.ScreenUpdating = False c'était un peu mieux mais on voyait quand même un saut d'écran et la avec le nouveau code plus rien...super!!!!
Merci encore.
 
Bonjour scoubidou35, job75, le forum

@scoubidou35 , vous avez essayé de protéger vos feuilles en autorisant le filtre automatique dans chaque feuille ?

Bien cordialement, @+
Sans titre.png
 

Discussions similaires

Réponses
10
Affichages
367

Statistiques des forums

Discussions
315 147
Messages
2 116 770
Membres
112 857
dernier inscrit
sanogo