La protection des feuilles, empêches le fonctionnement des Macros

Bonjour,

Voilà, je viens vers vous pour solliciter votre aide concernant protection des feuilles.

J'ai mon classeur Excel avec plusieurs pages (+/- 20 pages et une bonne quinzaine de macro) dont il y a des pages de calcules avec formulaire, des pages qui s'incriment suite à l'execution des macros des tableaux croisés dynamique et des graphiques croisés dynamique, des feuilles de calcules et des formulaires.

Je souhaite protéger mes feuilles (cellules avec les formules) pour des erreurs de frappe au niveau des formule qui se trouve dans des cellules différentes et j'ai trouvé un bout de codage sur le net pour protéger mais la protection se fait très bien mais l'execution des macros est bloquées dû à la protection.

Comment me prendre de ce cas. A l'ouverturede mon fichier j'ai aussi un login et mot de passe par utilisateur à l'ouverture du classeur. Y aurai t'il moyen d'exclure la protection à l'execution des macros ou des tableaux et graphiques croisés dynamique.

Sub protect_all_sheets()
top: 
pass = InputBox("password?") 
repass = InputBox("Verify Password") 
If Not (pass = repass) Then 
MsgBox "you made a boo boo" 
Goto top 
End If 
For i = 1 To Worksheets.Count 
If Worksheets(i).ProtectContents = True Then Goto oops 
Next 
For Each s In ActiveWorkbook.Worksheets 
s.Protect Password:=pass 
Next 
Exit Sub 
oops: MsgBox "I think you have some sheets that are already protected. Please unprotect all sheets then running this Macro." 
End Sub
erreur mot depasse

Merci d'avance.

Thibet

Bonsoir, j'ai bien peur que dans ce cas vous deviez ajouter dans toutes vos macro :

une ligne en début de macro pour retirer la protection et

une ligne en fin de macro pour la remettre.

Bonjour à tous,

ou protéger tes feuille à par macro à l'ouverture avec le paramètre UserInterfaceOnly:=True
Ca ne concerne que l'utilisateur, pas les macros (à de rares opérations près)
Exemple :

Private Sub Workbook_Open()
With Worksheets("Feuil1")
    .EnableAutoFilter = True
    .EnableOutlining = True
    .Protect Contents:=True, Password:="Toto", UserInterfaceOnly:=True
End With
End Sub

eric

Bonjour,

Merci à vous tous,

Effectivement je pourrais faire comme dit Xmenpl mais j'ai aussi des feuilles avec des codes. Exemple pour un de mes tableau croisé mais ici ça bloque aussi.

Private Sub Worksheet_Activate()
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
End Sub

En ce qui concerne pour votre intervention eriiic, cotre code je le place dans Thisworkbook ou dans les feuilles ou se trouve les userform de connexion ou jinsere dans la macro "protect_all_sheets()"

PS: Est-ce que pour la solution de Xmenpl si j'aoutais une ligne en début du macro "protect_all_sheets()" pour retirer la protection et une ligne en fin de macro pour la remettre fonctionnera t elle?

Merci

A+

dans Thisworkbook oui, c'est un événement classeur

Bonjour eriiic,

ici la "Feuil1" c'est pour laquelle, car je viens de compter j'en ai 25 et +1 avec le Thisworkbook et mes macros plus 2 userform, si j'ai compris j'ai ajouté la macro de protection et aussi ton code dans Thisworkbook.

Je reçois des erreur d'execution

erreur ecran macro ecran macro erreur2 ecran macro

Merci +

PS : Est-il possible sur une des feuilles où il y a protection de feuil de laisser une colonne en dehors exemple feuil8 colonne C en dehors de la protection (car ici il doit être modifier manuellement) ou comme sur l'erreur ci-dessus le combobox envois une valeur text à la "d7" > Range("D7").valeur = .text

Bonjour,

pas envie de faire un fichier de travail que tu aurais dû fournir pour tester.
Possible que .Refresh fasse partie des exceptions où il faut déprotéger la feuille et remettre ensuite.

Si tu veux protéger toutes les feuilles :

Private Sub Workbook_Open()
    Dim sh As Worksheet
    For Each sh In Worksheets
        sh.EnableAutoFilter = True
        sh.EnableOutlining = True
        sh.Protect Contents:=True, Password:="Toto", UserInterfaceOnly:=True
    Next sh
End Sub

C'est à toi d'enlever la protection des cellules devant rester non protégées dans 'Format de cellule / Protection'
eric

Bonjour,

J'ai suivis à la lettre mais je pense que je fais une ou des erreurs mais où ...

unprotected

voici mon Thisworkbook;

Option Explicit
Private Sub Workbook_Open()

ActiveSheet.Unprotect ("Toto")

Dim curSheet As Worksheet
For Each curSheet In ThisWorkbook.Sheets
    If curSheet.Name <> "BIBLIO001" Then curSheet.Visible = xlSheetVisible
Next curSheet
ThisWorkbook.Sheets("BIBLIO001").Visible = xlSheetVeryHidden
Feuil13.Activate
Range("M5").Activate
   [_utilisateur] = "Invité"
   Connecter
   Alimenter_Combo
   Application.DisplayFullScreen = True

Dim sh As Worksheet
    For Each sh In Worksheets
        sh.EnableAutoFilter = True
        sh.EnableOutlining = True
        sh.Protect Contents:=True, Password:="Toto", UserInterfaceOnly:=True
    Next sh
    ActiveSheet.Protect ("Toto")
End Sub

Private Sub Workbook_SheetActivate(ByVal sh As Object)
    Dim cellule As Range
    For Each cellule In [_rubriques]
        If cellule = sh.Name Then

            If Not cellule.Offset(0, 1) = True Then

                Feuil13.Activate
                MsgBox "L'accès interdit"
            End If
        End If
    Next
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Sheets("BIBLIO001").Visible = xlSheetVisible
Dim curSheet As Worksheet
For Each curSheet In ThisWorkbook.Sheets
    If curSheet.Name <> "BIBLIO001" Then curSheet.Visible = xlSheetVeryHidden
Next curSheet
End Sub

j'avais ma feuille de TCD1; je l'ai adapté ainsi :

Private Sub Worksheet_Activate()
ActiveSheet.Unprotect ("Toto")
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
ActiveSheet.Protect ("Toto")
End Sub

Merci

A+

Bonjour Thibet,

Comme déjà dit, merci de JOINDRE un fichier à vos demande

Sinon, à l'ouverture vous déprotégez la feuille active et ensuite vous activez la feuille 3
comment voulez-vous que cela fonctionne

A+

Bonjour à tous,

Pourquoi annuler l'effet de UserInterfaceOnly:=True avec ActiveSheet.Protect ("Toto") ??
eric

Bonjour à tous,

J'ai déprotégé ma feuille active mais j'en ai 24 d'autres. Comme expliqué dans mon sujet.

Je ne sais pas comment faire autrement

Merci

A+

Je ne comprend rien à tes explications, aucun effort de clarté.
J'abandonne, désolé.
eric

Bonjour eriiic,

Merci pour ton intervention. Mais comme expliqué j'ai trouvé ce code via google et je ne comprends dont le but de demande votre aide. Moi, j'ai bien voulu partager le fichier mais je ne peux pas car je ne suis pas le propriétaire (sinon avec un grand plaisir vous avez le Thisworkbook du fichier et la macro et je parle comme si c'était le mien pour pouvoir travailler et suivre).

Merci quand même eriiic,

A+

Rechercher des sujets similaires à "protection feuilles empeches fonctionnement macros"