Ma question peu être sembler bête mais tant pis. J'ai un classeur protégé avec des filtres automatiques. Cette feuille refuse les tris quand elle est protégée. Et même si je coche cache autorisation de modification, donc celle qui autorise les filtre et les tris également. Il m'affiche un message comme quoi ma feuille est protégé.
J'aimerais donc pouvoir effectuer un tri sans avoir à enlever la protection à chaque fois.
AllowSorting Argument de type Variant facultatif. La valeur True permet à l'utilisateur d'effectuer un tri dans une feuille de calcul protégée. Toutes les cellules de la plage à trier doivent être déverrouillées ou non protégées. La valeur par défaut est False.
Bonjour Pierrot et merci de me répondre aussi vite,
Non j'ai protégé la feuille pour que la personne qui utilisera mon fichier plus tard, ne s'amuse pas à écrire des valeurs dans des cellules qui accueillent des formules. Après il y a peu être un moyen pour éviter cela sans passer par la protection de feuille mais dans ce cas la je le connais pas
Mais je comprend pas l'intérêt dans ce cas de protéger une feuille si c'est pour avoir ses cellules déverrouillée :/ Bon je sens que tu vas me citer une 50 bonne raison mais bon xD
essaye ceci, à placer dans le module de la feuille concernée, click droit sur l'onglet => visualiser le code et tu colles :
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Row = 1 Then Feuil1.Unprotect "toto" Else Feuil1.Protect "toto"
End Sub
il serait peut être préférable de protéger avant de sortir....
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Feuil1.Protect "toto": Exit Sub
If Target.Row = 1 Then Feuil1.Unprotect "toto" Else Feuil1.Protect "toto"
End Sub
L'idée de la première ligne qui déverrouille la feuille pour pouvoir trier est géniale. Merci beaucoup.
A la place de "Feuil1", je propose d'utiliser "Me" qui référence la feuille pour laquelle la procédure évènementielle est exécutée. Cela permet de copier la procédure dans n'importe quelle feuille sans avoir à modifier "Feuil1" pour que ça fonctionne.
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then
Me.Protect "toto"
Exit Sub
End If
If Target.Row = 1 Then
Me.Unprotect "toto"
Else
Me.Protect "toto"
End If
End Sub