VBA protection et grouper un plan

Bonjour,

Dans un de mes fichiers j'utilise le code suivant :

Private Sub Workbook_Open()
With Worksheets("1")
   .EnableAutoFilter = True
   .EnableOutlining = True
   .Protect Contents:=True, Password:="password", UserInterfaceOnly:=True
End With
End Sub

Ma question est quel code je peux utiliser pour faire la même chose sur les feuilles de 1 à 50 ?

Dois je répéter l'opération 50 fois ?

Bonjour

En 1ère réponse je dirais oui

Fais une boucle

For I = 1 To 50
Witch Sheets(I)
.
.
End With
Next I

j'ai trouvé ceci et ça semble fonctionner...

Private Sub Workbook_Open()
Dim i As Byte
For i = 1 To Sheets.Count
With Sheets(i)
.EnableAutoFilter = True
.EnableOutlining = True
.Protect Contents:=True, Password:="password", UserInterfaceOnly:=True
End With
Next
End Sub

Avez vous mieux à proposer ?


Merci pour ta réponse Banzai, on a du se croiser dans nos posts ^^

Ee est il possible d'autoriser sur une seule des feuilles, par exemple la 49, le tri des données ?

Parce que là je sèche dur...

Bonjour

Tu peux essayer quelque chose dans ce style

Private Sub Workbook_Open()
Dim i As Byte

  For i = 1 To Sheets.Count
    With Sheets(i)
      .EnableAutoFilter = True
      .EnableOutlining = True
      If i = 49 Then
        .Protect Contents:=True, Password:="password", UserInterfaceOnly:=True, AllowSorting:=True
      Else
        .Protect Contents:=True, Password:="password", UserInterfaceOnly:=True
      End If
    End With
    Next
End Sub

Regardes bien l'aide de Protect pour l'utilisation de AllowSorting (Pas testé)

Yes c'est tout bon

Dernière petite question si mon onglet se nomme "Gest han 49"

je pensais mettre comme ca mais ça ne fonctionne pas

 Private Sub Workbook_Open()
Dim i As Byte

 For i = 1 To Sheets.Count
    With Sheets(i)
      .EnableAutoFilter = True
      .EnableOutlining = True
      If i = ("Gest han 49") Then
        .Protect Contents:=True, Password:="password", UserInterfaceOnly:=True, AllowSorting:=True
      Else
        .Protect Contents:=True, Password:="password", UserInterfaceOnly:=True
      End If
    End With
    Next
End Sub

Les espaces ne sont pas apprécier je pense, qu'est ce que j'ai raté dans mon écriture ?

Bonjour,

peut-être comme cela

Private Sub Workbook_Open()
    Dim i As Byte

     For i = 1 To Sheets.Count
        With Sheets(i)
          .EnableAutoFilter = True
          .EnableOutlining = True
          If Sheets(i).Name = "Gest han 49" Then
            .Protect Contents:=True, Password:="password", UserInterfaceOnly:=True, AllowSorting:=True
          Else
            .Protect Contents:=True, Password:="password", UserInterfaceOnly:=True
          End If
        End With
        Next
    End Sub

Bonne journée

Merci, ça fonctionne

Rechercher des sujets similaires à "vba protection grouper plan"