Protection feuille & code VBA incompatible ?

Bonjour ,

J'ai protégé une feuille de classeur contenant un code VBA me permettant de surligner la ligne entière de la cellule active de mon tableau.

J'ai également pris soin de permettre de sélectionner etc, toutes les possibilités, sauf l'ajout de cellules et leurs suppressions. Malgré tout, il est impossible de sélectionner une cellule sans un retour d'erreur. Également, impossible de rentrer une date ou autre, au sein des colonnes non verrouillées.

Une idée éventuelle SVP ?

5ericks-mfc-v3.xlsm (89.16 Ko)

Salut, remplace le code VBA de ta feuille par ça:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' Déverrouille la feuille

Me.Unprotect "1234"

Range("_maLigne") = ActiveCell.Row

' Verrouille la feuille

Me.Protect "1234"

End Sub

Remplace le '1234' par ton mot de passe. Je suis débutant mais je pense que ça devrait fonctionner. Par la suite ajoute un mdp sur le code VBA, qu'il ne soit pas accessible. Sinon en allant sur le code le mot de passe de la feuille sera visible.

Bonjour le fil

@Aziard, c'est bien ça, mais il y a plus simple

@Ericks, il suffit d'enlever la protection de la cellule qui est modifiée,
cellule que vous pouvez allez mettre au fin fond du classeur pour ne pas l'afficher

A+

Bonjour à tous,

@ Aziard, merci de ton essai, de ton aide. Je vais commencé, sans te vexer, par la solution la plus simple.

@ Bruno, merci également pour votre contribution ! De quelle cellule modifié s'agit-il SVP ? Il me semble y en avoir plusieurs.

@ Aziard,

J'ai suivi ta procédure, mais tout le tableau reste inaccessible. Par contre maintenant, l'erreur 1004 m'est retourné : "mot de passe invalide..." Lorsque j'ôte la protection, puis sélectionne une cellule, la feuille se protège automatiquement et l'erreur 1004 s'affiche à nouveau.

Précision : en retournant dans ma page de code VBA, il n'y a plus rien !

Re,

Dans le code, vous faite reference à la cellule "_maLigne" il suffit de déprotéger juste celle la

A+

Dans la solution que je t'ai proposé, tu a bien remplacé le '1234' par ton mot de passe réel de ta feuille ? Ca fonctionnait bien quand j'ai essayé.

Si il y a plus simple alors tu a raison, fais au plus simple
J'ai peut-être mal compris ta demande.. Car à ce que dit @ Bruno ne me parle pas beaucoup. J'ai un peu de mal à saisir, a quoi "maLigne" fait référence

Bonjour EricKs, Aziard, BrunoM45,

@Ericks, dans ton classeur ta cellule H1 (nommée _maLigne) est verrouillée.

Ce que préconise, en plus simple BrunoM45 est de déverrouiller cette cellule afin qu'elle ne bloque pas la macro évènementielle y faisant appel.

Déprotège ta feuille pour que tu puisses passer cette cellule en mode libre (non-verrouillée) par Format de cellule puis Protection et décoche cellule verrouillée.

Ensuite remet la protection une bonne fois pour toute.

Note que sélectionner une cellule en dehors du tableau met en surbrillance ta ligne active quand même.

Pour cela réduit les colonnes ou la macro évènementielle s'applique par.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Column < 8 Then Range("_maLigne") = ActiveCell.Row
End Sub

Même si ce n'est pas mon problème j'ai essayé la solution afin de comprendre
En déverrouillant la cellule H1 effectivement ca fonctionne. Et c'est plus simple que ma solution. J'aime bien faire compliquer

@ Aziard : "Dans la solution que je t'ai proposé, tu a bien remplacé le '1234' par ton mot de passe réel de ta feuille ? "

Oui, j'ai suivi et vérifié scrupuleusement tes instructions. Je te remercie beaucoup de ton bel état d'esprit !

@ X Cellus : Bonjour à toi et merci de tes précisions qui m'ont permis de réussir. C'était pourtant évident ! Mais lorsque l'on est focalisé sur un ou plusieurs éléments, on pense plus à l'essentiel.

Bon fin de week-end à tous.

Rechercher des sujets similaires à "protection feuille code vba incompatible"