Eviter message Excel "... sur feuille protégée..."

Bonjour,

Une feuille Xl contient des petits tableaux de valeurs archivés. Les cellules sont verrouillées. La feuille est protégée pour éviter toute modification.

Un 2clics sur certaines cellules déclenche des macros permettant par exemple de déplacer le tableau dans l’archive et/ou d’afficher un message. Tout fonctionne bien mais la macro terminée, Excel affiche « La cellule… que vous essayez de modifier est sur une feuille protégée…). DisplayAlerts ne donne rien...

Comment éviter ce message exaspérant ?

Le rame depuis 2 jours

Bonjour,

à mettre dans Thisworkbook :

Private Sub Workbook_Open()
    Worksheets("Feuil1").Protect Password:="pw", UserInterfaceOnly:=True
End Sub

si c'est sans mot de passe supprime Password:="pw",

Seul l'utilisateur devra déprotéger, plus les macros.

eric

Bonjour Eriiic

Merci de ton intérêt pour ma question. Excuse mon retard à te répondre. je viens à peine de voir ton message et de l'essayer

Le code suivant ne donne rien ni placé dans workbook_open() dans ThisWorkbook ni à l'ouverture de la Feuil1

Worksheets("Feuil1").Protect , UserInterfaceOnly:=True. Mon message apparait immédiatement suivi de celui d'Excel.

L' aide VBA sur Protect n'est pas très compréhensible où il est effectivement question de UserInterfaceOnly mais apparemment aussi d'un objet Chart et pas sheet.

Bonjour,

Pourtant c'est bien ça

Il faut mettre autant de fois cette ligne de code que de feuilles concernées (ou une boucle sur un array si tu sais faire).

Et remplacer "Feuil1" par le nom des feuilles.

Mais ce message, tu l'as après la fin des macros qui se déroulent entièrement ?

Si tu peux déposer un fichier de travail (anonymisé) reproduisant le pb stp.

Et dans ta macro double-clic tu mets bien Cancel=True une fois la plage contrôlée ?

Sinon tu entres en édition à la fin de la macro et il n'aime peut-être pas ce que la macro y a mis.

eric

Magnifique ! RESOLU

Bravo Eric.

Bravo et merci.

Je viens d'ajouter avant la dernière ligne End Sub ton fameux Cancel = True (sans même savoir pourquoi !)

Et je n'ai plus le message Excel. Tout est propre.

Je vais essayer de me documenter pour comprendre cet argument Cancel qui marque la fin de l'évènement doubleclic certainement

Reste à mettre en résolu. Je ne vois pas comment faire.

Il ne faut pas qu'elle s'exécute sur tous les double-clics, mais uniquement sur ceux où tu fais une action sur la feuille.

Sinon tu perds la possibilité d'éditer dans la cellule.

Met une macro double-clic ici pour voir.

eric

Comme demandé par Eric voici un extrait du code où tout fonctionne bien. Il opére sur une feuille d'archive où les seules actions autorisées sont 1)monter la grille d'un niveau dans la liste 2) descendre 3) supprimer 4) copier dans une autre feuille pour travail et celle-ci 0) rejeter un 2clics hors des grilles archivées

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

' 5 actions suivant la cellule cliquée

Worksheets("Feuil1").Unprotect

Worksheets("Feuil2").Unprotect

LT = Target.Row

CT = Target.Column

'Action 0) Rejette le double clic s’il n'est pas dans la grille

If CT = 1 Or CT = 11 Or LT = 1 Or (LT - 1) Mod 10 = 0 Then

MsgBox " Vous ne pouvez double-cliquer qu'à l'intérieur d'une grille

GoTo FIN

End if

… code des 4 autres actions ….

FIN: 'fin de chacune des 5 actions

Worksheets("Feuil2").Protect

Worksheets("Feuil1").Columns("B:J").Locked = True

Cancel = True

Worksheets("Feuil1").Protect UserInterfaceOnly:=True

End Sub

Bonjour,

je vois plutôt :

    '...
    Cancel = True
FIN:        'fin de chacune des 5 actions
    Worksheets("Feuil2").Protect
    Worksheets("Feuil1").Columns("B:J").Locked = True
    Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub

Par ailleurs :

Worksheets("Feuil1").Columns("B:J").Locked = True

est inutile dans la macro. Puisque ça ne change jamais c'est à faire une fois pour toute sur la feuille.


Pour :

Worksheets("Feuil1").Protect UserInterfaceOnly:=True

Je ne t'ai pas dit de les mettre là, mais dans workbook_open() de thisworkbook.

Et les :

Worksheets("Feuil1").Unprotect

sont également inutiles puisque la commande précédente dit à excel : protège contre les utilisateurs mais pas les macros


Ce qui se résume à :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' 5 actions suivant la cellule cliquée
    LT = Target.Row
    CT = Target.Column
    'Action 0) Rejette le double clic s’il n'est pas dans la grille
    If CT = 1 Or CT = 11 Or LT = 1 Or (LT - 1) Mod 10 = 0 Then
        MsgBox " Vous ne pouvez double-cliquer qu'à l'intérieur d'une grille"
        Exit Sub
    End If
    '… code des 4 autres actions ….
    '...celles acceptées doivent avoir avant le End If :
    ' Cancel = True
    ' exit sub ' dans la mesure ou les If suivants n'ont pas besoin d'être exécuté
    '...celles refusées doivent avoir avant le End If :
    ' exit sub
End Sub

eric

PS : merci d'utiliser l'icone </> pour les codes pour avoir une lecture plus facile et agréable.

Rechercher des sujets similaires à "eviter message feuille protegee"