Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre automatique + Protection

7 réponses
Avatar
Eric549
bonjour

ce groupe m'a permis de d=E9couvrir le code suivant donn=E9 par AV
que je remercie

Je suis sous excel 2003 - Toutes les feuilles du classeur ont un
filtre automatique sauf deux
For Each sh2 In ActiveWorkbook.Sheets
Select Case sh2.Name
Case Is <> "R=E9cap_IDE"
''''' FITRE UF 7417

sh2.[a12:Am1000].AutoFilter Field:=3D1, Criteria1:=3D"=3D" &
Sheets("PARAM").Cells(3, 2).Value

sh2.[a12:Am1000].AutoFilter Field:=3D3, Criteria1:=3D"=3D" &
Sheets("PARAM").Cells(3, 1).Value
End Select
Next


D=E9s l'instant, o=F9 ces feuilles sont prot=E9g=E9es , les filtres
automatiques ne fonctionnent plus

Le code suivant, si j'ai bien compris permet de passer outre cette
protection
mais comment adapter ce code a toutes les feuilles sauf deux
merci pour vos r=E9ponses

Private Sub Workbook_Open()
> With Sheets("Feuil1")
> .EnableAutoFilter =3D True
> .Protect Contents:=3DTrue, UserInterfaceOnly:=3DTrue
> End With
> End Sub

7 réponses

Avatar
FdeCourt
Salut,

Avec ce bout de code ? :

Private Sub Workbook_Open()
For Each sh In ThisWorkbook.Sheets
Debug.Print sh.Name
If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" Then
With sh
.EnableAutoFilter = True
.Protect Contents:=True, UserInterfaceOnly:=True
End With
End If
Next
End Sub

Cordialement,

F.
Avatar
Eric549
On 30 mar, 13:31, FdeCourt wrote:
Salut,

Avec ce bout de code ? :

 Private Sub Workbook_Open()
    For Each sh In ThisWorkbook.Sheets
        Debug.Print sh.Name
        If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" Then
            With sh
                 .EnableAutoFilter = True
                 .Protect Contents:=True, UserInterfa ceOnly:=True
            End With
        End If
  Next
  End Sub

Cordialement,

F.



merci pour ta réponse

Hélas,

J'ai le message suivant :

Vous ne pouvez pas exécuter cette commande sur un protégée.
Pour utiliser cette commande, vous devez ôter la protection de cette
feuille.

Merci pour vos réponse
Eric
Avatar
FdeCourt
Ok, alors supprimons la protection de la feuille, puis remettons la :
Private Sub Workbook_Open()
For Each sh In ThisWorkbook.Sheets
Debug.Print sh.Name
If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" Then
With sh
.Unprotect
.EnableAutoFilter = True
.Protect Contents:=True, UserInterfaceOnly:=True
End With
End If
Next
End Sub

Lance le une première fois, puis ensuite enlève le .Unprotect.

Cordialement,

F.
Avatar
Eric549
On 30 mar, 15:04, FdeCourt wrote:
Ok, alors supprimons la protection de la feuille, puis remettons la :
 Private Sub Workbook_Open()
    For Each sh In ThisWorkbook.Sheets
        Debug.Print sh.Name
        If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" Then
            With sh
                 .Unprotect
                 .EnableAutoFilter = True
                 .Protect Contents:=True, UserInterfa ceOnly:=True
            End With
        End If
  Next
  End Sub

Lance le une première fois, puis ensuite enlève le .Unprotect.

Cordialement,

F.



merci pour cette solution, mais j'ai toujours le même message d'erreur
pourtant , j'ai suivi cette démarche à la lettre
Avatar
michdenis
Bonjour,

Pour déprotéger tes feuilles, si tu utilises un mot de passe,
tu dois l'inclure dans la procédure. En fait, remplace à
2 endroits "MotDePasse" par le tien.
J'espère que tu utilises le même mot de passe pour
chacune des feuilles...sinon ce type de procédure devra
être adaptée.

'------------------------------------------
Private Sub Workbook_Open()
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" Then
With sh
.Unprotect "MotDePasse" '<<===indique ton mot de passe si requis
.EnableAutoFilter = True
.Protect "MotDePasse", Contents:=True, UserInterfaceOnly:=True
End With
End If
Next
End Sub
'------------------------------------------
Avatar
FdeCourt
Merci Michdenis ;)
Avatar
Eric549
On 30 mar, 16:15, "michdenis" wrote:
Bonjour,

Pour d prot ger tes feuilles, si tu utilises un mot de passe,
tu dois l'inclure dans la proc dure. En fait, remplace
2 endroits "MotDePasse" par le tien.
J'esp re que tu utilises le m me mot de passe pour
chacune des feuilles...sinon ce type de proc dure devra
tre adapt e.

'------------------------------------------
Private Sub Workbook_Open()
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" Then
            With sh
                 .Unprotect "MotDePasse"    '<<= ==indique ton mot de passe si requis
                 .EnableAutoFilter = True
                 .Protect "MotDePasse", Contents:=Tru e, UserInterfaceOnly:=True
            End With
        End If
 Next
 End Sub
'------------------------------------------  



Ok merci pour ce comlément d'information
Tu m'as bien aidé
merci encore
Bonne journée à tous