Feuille qui se deverouille toute seule

Bonjour

Je ne comprends pas comment ni pourquoi une feuille qui est vérouillée se déverrouille toute seule et permet donc des écritures là ou il ne faut pas.

J'ai un tableau avec 5 colonnes, il commence en ligne 3 et fait 5000 lignes donc de A3:E5000 je protège l'ensemble en verrouillant les cellule sauf la 3 ieme colonne. Je peux donc écrire dans cette colonne et cela est normal.

j'ai une macro de type Private Sub Worksheet_Change(ByVal Target As Range) qui me permet de taper une valeur dans la cellule B1 de ma feuille et cela va automatiquement filtrer sur cette valeur la première colonne de mon tableau. dans cette macro je commence donc par un ActiveSheet.Unprotect sans quoi le filtre ne se fait pas (meme si le filtre est coché comme autorisé dans le verrouillage) et à la fin je reverouille

je rentre donc ma valeur en filtre, le tableau se filtre bien, tous les champs sont bien protégés, et je peux écrire dans ma troisième colonne.

ET LA : des l'instant ou j'ecris sur ma colonne déverrouillé, l'ensemble de la feuille se déverrouille par magie et je peux donc écrire partout !!

je n'y comprends rien

merci pour votre aide et voici la macro :

Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.Unprotect

If Target.Count > 1 Then Exit Sub
If Target.Address <> "$A$1" Then Exit Sub
ActiveSheet.Range("$A$3:$E$5000").AutoFilter Field:=1, Criteria1:=Target.Value

ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True

End Sub

Bonjour,

Au début de ta macro, tu déprotèges la feuille. Puis, si plus d'une cellule est sélectionnée, la macro s'arrête > avec la feuille déverrouillée.

Essai ainsi ...

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub  

ActiveSheet.Unprotect

If Target.Address <> "$A$1" Then Exit Sub
ActiveSheet.Range("$A$3:$E$5000").AutoFilter Field:=1, Criteria1:=Target.Value

ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True

End Sub

ric

merci pour cette reponse

je pensais aussi que ce serait tout bete... MAIS non.

malheureusement cela ne vient pas de là. j'ai pu me rendre compte qu'en fait (a priori) cela ne serait pas lié à la macro sur la feuille . Car , même sans faire appel à celle ci il y a exactement le meme comportement :

je suis verrouillé

si je tente d’écrire sur une cellule verrouillé => message "impossible..." donc OK

je rentre sur une cellule de mon tableau que j'ai autorisé en modif => que j’écrive qq chose ou simplement je double clic, je n'ecri rien et je fais entrer

=> la feuille se déverrouille toute seule !! et donc je peux avoir accès à toutes les cellules sans protection.

J'aimerais bcp pouvoir envoyer le fichier mais il pèse 150Mo et contient des infos conf je m'excuse vraiment

des idées .?

merci

Bonjour,

Sur une copie du fichier, supprime 98 % des données.

Ne conserve que les macros et l'essentiel pour pouvoir effectuer quelques tests.

Puis, à l'aide de https://www.excel-pratique.com/fr/utilitaires/anonymisation-donnees tu peux anonymiser les données.

Si le fichier est encore trop gros pour le forum, il y a https://mon-partage.fr/ pour les fichiers volumineux.

ric

merci @ric j'ai pu faire ce que tu m'as conseillé

voici le fichier

donc si tu te positionne sur onglet "traitement" normalement verrouillé

en cellule G5, tu dois pouvoir taper c'est normal

des que tu auras tapé quelque chose, tu verras que la feuille se déverrouille d'un coup

merci

8test-forum.xlsm (786.51 Ko)

Bonjour,

Excuse-moi, je n'avais pas bien regardé ton code la première fois.

Il faut désactiver la protection seulement après le test des 2 premières conditions.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub    ' premier test

If Target.Address <> "$B$1" Then Exit Sub    ' deuxième test

ActiveSheet.Unprotect    ' si l'on passe les 2 premiers tests, la suite ...

ActiveSheet.Range("$A$1:$E$5000").AutoFilter Field:=1, Criteria1:=Target.Value

Range("g4").Select

ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True

End Sub

ric

bonjour et merci

effectivement cela cenait bien de là. c'est ok a present

une autre question j'en profite : saurais tu comment faire pour faire en sorte que à la fin de la macro, la cellule sous la G4 soit selectionnée ?

le pb etant que vu qu'il y a des filtre en A4, la cellule sous G4 n'est pas forcement G5.

ce code ne fonctionne pas :

Range("G4").Select

Selection.Offset(1, 0).Select

merci

Bonjour,

Un essai ...

Private Sub Worksheet_Change(ByVal Target As Range)

   If Target.Count > 1 Then Exit Sub
   If Target.Address <> "$B$1" Then Exit Sub

   ActiveSheet.Unprotect
   Application.ScreenUpdating = False
   ActiveSheet.Range("$A$1:$E$5000").AutoFilter Field:=1, Criteria1:=Target.Value

   For Z = 5 To Cells(4, "g").End(xlDown).Row
      If Cells(Z, "G").EntireRow.Hidden = msoFalse Then
         Cells(Z, "G").Select
         Exit For
      End If
   Next Z

   ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
                                  , AllowSorting:=True, AllowFiltering:=True
End Sub

ric

@ric merci

cela fonctionne

une idée pourquoi le code suivant verrouille bien la feuille mais pour autant on ne peut pas utiliser les filtres...?

ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True _

, AllowSorting:=True, AllowFiltering:=True

Bonjour,

Ici, les filtres fonctionnent ... Ou je ne comprends pas bien ton propos.

ric

sur mon fichier excel véritable les filtres ne sont pas actif, cela réagi comme lorsqu’on verrouille la page en ne cochant pas la possibilité d'utiliser les filtres dans les options de verrouillage...

Bonjour,

J'essaie de reproduire l'erreur décrite ... sans succès.

ric

Rechercher des sujets similaires à "feuille qui deverouille toute seule"