Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Discussions similaires

Réponses
10
Affichages
371
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…