J'ai un classeur avec la Feuil1 protégée à l'ouverture du classeur.
Sur cette feuille, j'ai ajouté un bouton "enregistrer" associé à une macro.
L'idée est
- d'ôter la protection de la Feuil1
- écrire l'heure de la sauvegarde dans la cellule A1 de la Feuil1
- enregistrer le fichier (le classeur Excel)
- ré-activer la protection de la Feuil1
[i]Erreur d'exécution '1004' :
La cellule ou le graphique est protégé et en lecture seule.
Pour modifier une cellule ou un graphique protégé, ôtez la protection avec la commande Ôter la protection de la feuille (onglet Révision, groupe Modification). Vous devrez peut-être taper un mot de passe./i
Bien sûr, je sais ôter la protection dans le menu Excel mais ce n'est pas ça que je veux faire. Donc ce message du débogage ne m'éclaire pas beaucoup...
Merci pour votre aide !
A voir également:
La cellule ou le graphique que vous essayez de modifier se trouve sur une feuille protégée
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 16 déc. 2012 à 10:51
Bonjour,
Pourquoi faire un bouton "enregistrer" et en même temps utoiliser la procédure évènementielle Workbook_BeforeSave (qui ne comprend pas d'instruction d'annulation dans ton code) ?
Le bouton suffirait (avec le code de l'autre)
Essaye par ailleurs de mettre un
DoEvents
juste après
Workbooks("Classeur1test").Sheets("Feuil1").Range("A1").Value = "heure de la sauvegarde : " & Time
Si ne marche toujours pas, c'est que tu as autre chose qui, dans ton code, "coince". Peut-être une remise de la protection dans un évènement Change (qui se déclenche lorsque tu reremplis la cellule A1) ou ailleurs encore.
Essaye alors (tout ton code étant mis dans le bouton "enregistrer") de commencer par Application.EnableEvents = False
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Personne ne va ouvrir ton fichier. De toute évidence, ton programme essaie d'accéder à une feuille qui n'a pas été déprotégée avant. Fais un copier-coller de l'instruction qui cause problème et de quelques lignes autour. Inutile d'envoyer tout ton code. Ce que cela prend c'est une partie suffisante qui inclue la ligne qui cause problème.
Bonjour, justement je déprotège la ligne au début du programme. Et le fichier fourni est un fichier test qui ne comprend que la partie du code concernée.
Enfin voici le code :
Dans le module objet This Workbook :
Private Sub Workbook_Open()
Sheets("Feuil1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="test"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Workbooks("Classeur1test").Sheets("Feuil1").Unprotect ("toto")
Worksheets("Feuil1").Unprotect Password:="toto"
Workbooks("Classeur1test").Sheets("Feuil1").Range("A1").Value = "heure de la sauvegarde : " & Time
Workbooks("Classeur1test").Sheets("Feuil1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="toto"
End Sub
Dans le Module 1 :
Sub enregistrer()
Workbooks("Classeur1test").Save
End Sub
Le bouton "enregistrer" sur la Feuil1 est associée à cette dernière macro.
La ligne qui me pose problème est celle-ci :
Workbooks("Classeur1test").Sheets("Feuil1").Range("A1").Value = "heure de la sauvegarde : " & Time