macro sur feuilles protégées

lumat83

XLDnaute Nouveau
Bonjour à tous,

Je travaille sur un fichier dont les cellules verrouillées doivent être inacessibles mais contenant quelques macros.

Avec les instructions "ActiveSheet.Unprotect" et "ActiveSheet.protect" je parviens à automatiquement déverrouiller une feuille provisoirement le temps d'exécuter une macro.

"ActiveSheet.protect" a l'air de bien fonctionner tant que je travaille sur le fichier mais après l'avoir sauvegardé, lorsque je le réouvre, les cellules verrouillées sont à nouveau accessibles (bien que non modifiables). Je dois à chaque fois ôter la protection et la rétablir en décochant l'option adéquate

Comment se faisse ? :)
Y a t-il un moyen de rétablir l'option de verrouillage initiale ?

Merci d'avance pour votre aide
 

ERIC S

XLDnaute Barbatruc
Re : macro sur feuilles protégées

Bonjour

regarde l'aide sur protect

1/ possibilité d'utiliser

sheets("toto").protect userinterfaceonly:=true

permet les accès par macro

2/ ton pb est'il que tu protèges avec pour option d'interdire l'accès aux cellules verrouillées (fonctionne sous 2003, pas sous 97, sous 2000?)?

l'enregistreur de macro donne :
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
 

lumat83

XLDnaute Nouveau
Re : macro sur feuilles protégées

En réalité, mon classeur contient une quarantaine de feuilles et 3 macros. C'est pour cette raison que je souhaite utilisé protect plutôt que userinterfaceonly.
Pour ta question 2/, oui c'est exactement ça, l'interdiction de l'accès aux cellules verrouillées.

Même avec ce que donne l'enregistreur, après sauvegarde l'option saute
 
Dernière édition:

lumat83

XLDnaute Nouveau
Re : macro sur feuilles protégées

Ok, je le joins.

Le bouton est une macro qui inscrit "maladie" en rouge

La feuille est verrouillée sans mot de passe.

Selectionne la cellule B5, clique sur le bouton, le mot "maladie" s'inscrit dans B5. A ce stade, les autres cellules restent innacessibles.
Sauvegardes et quitte. En réouvrant le classeur, tu remarqueras que toutes les cellules sont à nouveau accessibles :(
 

Pièces jointes

  • Planning FES Prov.xls
    48.5 KB · Affichages: 74
  • Planning FES Prov.xls
    48.5 KB · Affichages: 77
  • Planning FES Prov.xls
    48.5 KB · Affichages: 80

ERIC S

XLDnaute Barbatruc
Re : macro sur feuilles protégées

re

j'ai l'impression que tout fonctionne bien :confused:

quand tu réouvres ton ficher, déprotèges la feuille, reprotège et regarde les options proposées (accès cellules verrouillées inactif normalement)

quelle version XL?
 

lumat83

XLDnaute Nouveau
Re : macro sur feuilles protégées

:eek: Chez moi c'est actif

Ma version : 2002 SP3

J'ai le même problème avec ton exemple. Attention, je précise bien que toutes les cellules verrouillées sont selectionnables. Mais elles ne sont pas modifiables effectivement. mais mon but est qu'elles ne soient même pas sélectionnables.
 
Dernière édition:

fredh

XLDnaute Occasionnel
Re : macro sur feuilles protégées

Bonjour le fil

Personelement je me suis fait un bouton qui enleve la protection de feuille sur toute les feuille du fichier.
Un bouton pour proteger toute les feuille
Un bouton pour enlever la protection de classeur
Un bouton pour proteger le classeur

Ensuite suivant mes apli ou macro j'appele mes macros...

Dans un module :
Code:
Option Explicit
 
 
Sub Protection_Classeur_ON()
ActiveWorkbook.Protect Structure:=True, Windows:=False
End Sub
 
 
Sub Protection_Classeur_OFF()
ActiveWorkbook.Unprotect
End Sub
 
 
Sub Protection_feuille_OFF()
Org_Sheet = ActiveSheet.Name 'memorisation de la feuille de depart
Org_cell = ActiveCell.Address 'memorisation de la celulle de depart
For Each sh In Sheets 'Fred
    If sh.Visible = True Then 'seulement les feuille visible
        sh.Select
        sh.Unprotect
    End If
Next sh
Sheets(1).Select
Sheets(Org_Sheet).Select
Range(Org_cell).Select
End Sub
 
 
Sub Protection_feuille_ON()
Org_Sheet = ActiveSheet.Name
Org_cell = ActiveCell.Address
'Fred ActiveSheet.Select  'Fred cela permet de deselectionner le groupage
'Fred ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
For Each sh In Sheets 'fred
    If sh.Visible = True Then
        sh.Select
        sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End If
Next sh
Sheets(1).Select
Sheets(Org_Sheet).Select
Range(Org_cell).Select
End Sub


Puis dans un autre module
Code:
Public Org_Sheet As String, Org_cell As String
Public sh As Worksheet
 
Dernière édition:

fredh

XLDnaute Occasionnel
Re : macro sur feuilles protégées

rebonsoir

Perso je stocke ces module dans un fichier excell qui est cacher (menu fenetres --> masquer). Ce fichier excell je le stocke dans "c:\Program Files\Microsoft Office\OFFICE11\XLSTART\" ce qui fait que le fichier sera lancer a chaque demarrage de excell sans meme que quelqu'un sans apercoive.

Cela est valable seulement pour ta becane ou les becane ou tu mettra le fichier dans xlstart.
L'avantage est que toi tu pourras proteger deproteger tres rapidement.
De plus sur les autres becane les utilisateur peuvent naviguer avec Tab sur les celulle non proteger (bien sur tes fichier finaux sont proteger (feuille et classeur) sauf les celulles qui sont destiner a etre modifier)



Un autre moyen plus lourd celui la c'est de stocker les macros dans chaque fichier et de creer une barre d'outil associer a chaque fichier.
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22