Erreur macros feuille protégée malgré userinterfaceonly=true

Bonjour,

ll se passe un truc bizarre dans l'exécution de mon code.

Dès l'ouverture du classeur : les lignes suivantes sont exécutées :

Private Sub Workbook_Open()

'protéger feuilles
Sheets(1).Protect "mdp", UserInterfaceOnly:=True
Sheets(2).Protect "mdp", UserInterfaceOnly:=True
Sheets(3).Protect "mdp", UserInterfaceOnly:=True

A ce que j'ai compris, ajouter UserInterfaceOnly=true, permet, malgré la protection de la feuille, de pouvoir la modifier quand même via TOUTE macro (je me trompe ? Le nom UserInterfaceOnly me paraît étrange du coup, ça serait plus logique que ça s'appelle MacroOnly).

Tout se passe bien jusqu'au message suivant :

"Erreur d'exécution 1004", la cellule ou le graphique est protégée et en lecture seule. Pour ôter la protection blablabla.

Je clique sur "débogage" et je vois la ligne suivante surlignée en jaune :

Sheets(1).Activate

Là on se dit : "ah mince, peut-être que "Activate" est une méthode interdite malgré le userinterfaceonly=true"

Que nenni ! Je tape sur F8 ou F5 et la ligne s'exécute normalement !

L'exécution reprend jusqu'à ce que cette ligne soit à nouveau rencontrée et même message d'erreur, même ligne surlignée en jaune, même possibilité de reprendre l'exécution en tapant F5 ou F8.

Alors là, je sèche...

Bonjour gomugomuno (fan de manga ou je ne m'y connais pas... ),

Peux-tu poster le code complet ? Voire mieux, un bout du fichier... ?

Sinon question vocabulaire, la propriété UserInterfaceOnly=True signifie bien que quand tu protèges (méthode Protect) ta feuille, tu appliques la protection seulement sur l'interface utilisateur.

Bonjour,

Personnellement j'ai constaté des limites à cette fonctionnalité.

Par exemple si tu as transformé une plage en tableau (apparu sur 2007 ou 2010) tu es marron sur certaines modifs, il faut déprotéger la feuille.

eric

Il m'est déjà arrivé de tomber sur ce petit piége dans le passé, alors depuis, j'ai toujours préféré jouer la totale, Càd déverrouiller puis reverrouiller la feuille:

MaFeuille.Unprotect "Toto"
blablablabla
MaFeuille.Protect "Toto"

Cordialement.

vba-new a écrit :

Bonjour gomugomuno (fan de manga ou je ne m'y connais pas... ),

Peux-tu poster le code complet ? Voire mieux, un bout du fichier... ?

Le code est gros et utilise plusieurs Userform, et surtout pour qu'il marche, utilise des données que je ne peux pas poster comme ça sur un forum. L'adapter avec des fausses données me prendrait du temps. Mais merci pour ton aide !

J'ai plutôt appliqué la technique de BACKALIFE en codant ces lignes que j'appelle au début et à la fin des macros.

Sub tout_protéger()
Sheets(1).Protect "mdp"
Sheets(2).Protect "mdp"
Sheets(3).Protect "mdp"

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True

End Sub

Sub tout_déprotéger()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False

Sheets(1).Unprotect "mdp"
Sheets(2).Unprotect "mdp"
Sheets(3).Unprotect "mdp"
End Sub

Sub tout_protéger_et_interrompre()
Call tout_protéger
End
End Sub

En tout cas, ça me rassure que je sois pas le seul à avoir ce problème

Rechercher des sujets similaires à "erreur macros feuille protegee userinterfaceonly true"