Est ce possible???

aeque

XLDnaute Occasionnel
Bonjour le fofo

Cela fait un moment que je cherche une réponse à ma question mais malheureusement je n'arrive pas à la trouver, j'espère que vous pourrez m'aider.

Voici mon problème:

J'aimerai que lorsque j'utilise une macro dans une feuille quelconque toutes les autres feuilles se déprotègent.



voici le code que j'ai dans WorkBook Open

Code:
Private Sub Workbook_Open()
Sheets("RH").Protect "toto", UserInterfaceOnly:=True
Sheets("Tracking TBT").Protect "toto", UserInterfaceOnly:=True
Range("toutes_tbt").EntireColumn.Hidden = True
Sheets("Tracking Safety Meeting").Protect "toto", UserInterfaceOnly:=True
Sheets("Tracking Safety Meeting").Range("toutes_sf").EntireColumn.Hidden = True

Donc cela fonctionne très bien lorsque les macros agissent dans la feuille où elles sont programmées mais cela se complique quand elle agissent sur les autres.

Cela me met comme erreur : Impossible de définir la propriété Hidden de la classe Range

à cette ligne là :
Code:
Private Sub UserForm_Activate()
Sheets("tracking tbt").Range("toutes_tbt").EntireColumn.Hidden = False

Notez que l'USF se lance via la feuille RH


J'espère que vous pouvez comprendre car je n'arrive pas à uploader mon fichier, même réduit et zipper il dépasse grandement la taille maximale


Merci pour le coup de main
 
G

Guest

Guest
Bonjour,

Déprotéger la feuille
Travailler sur la feuille
Re-Protégéer la feuille

Code:
Private Sub UserForm_Activate()
Sheets("Tracking TBT").Unprotect "toto"
Sheets("tracking tbt").Range("toutes_tbt").EntireColumn.Hidden = False
Sheets("Tracking TBT").Protect "toto", UserInterfaceOnly:=True
End Sub

Normalement avec UserInterFaceOnly:= True tu ne devrais pas avoir à déprotéger avant.

A+
 
Dernière modification par un modérateur:
G

Guest

Guest
Re,

@aeque: nous n'avons pas forcément besoin du fichier complet. Purge le pour ne garder que ce qui nous permettra de comprendre. Ou reproduit un exemple parlant dans un nouveau fichier.(avec explications détaillées de ce que tu souhaites)

Hey JC,:):) tu m'inquietes là, chez moi tous les intitulés internes du forum sont en anglais depuis une semaine? Je pensais que David avait du faire quelque chose.:eek::confused:
koi esse que sait sa tencor?

A+
 
G

Guest

Guest
re,

Manque plus que les explications claires.

Dans ton premier post tu disais
Code:
J'aimerai que lorsque j'utilise une macro dans une feuille quelconque toutes les autres feuilles se déprotègent.

Dans ce que tu donnes c'est l'inverse, les feuilles sont déprotégées.

Alors voici deux macros, l'une pour proteger toutes les feuilles, l'autre pour déprotéger les feuilles.:

Code:
Option Explicit
Sub DeprotegerToutesFeuilles(mdp As String)
    Dim sh As Worksheet
    For Each sh In Worksheets
        If sh.ProtectContents Then sh.Unprotect mdp
    Next sh
End Sub
Sub ReprotegerToutesFeuilles(ByVal mdp As String)
    Dim sh As Worksheet
    For Each sh In Worksheets
        If Not sh.ProtectContents Then sh.Protect mdp, userinterfaceonly:=True
    Next sh
End Sub

Au besoin tu appelles l'un ou l'autre en lui passant le mot de passe entre guillemets
ex:

Code:
Sub LaMacroQuiTravailleSurLesFeuilles() 
    DeprotegerToutesFeuilles "lemotdepasse"
    '
    '.... lignes de codes qui travaillent sur les feuilles
    '
    ReprotegerToutesFeuilles "lemotdepasse"
End Sub

où tu remplaces "lemotdepasse" par ton mot de passe réel.

A+
 

aeque

XLDnaute Occasionnel
Re : Est ce possible???

Hasco, je ne comprends pas, chez moi les feuilles sont toutes protégées dès l'ouverture et quand je clique sur le bouton "ajouter un employé" le message d'erreur apparait.

Corriges moi si je me trompe il n'y a rien dans Workbook open???
 

aeque

XLDnaute Occasionnel
Re : Est ce possible???

Merci Hasco pour ta réponse mais justement je souhaite que les feuilles soient protégées tout le temps exepté pendant l'utilisation des macros. Le problème sur le fichier et quand j'execute une macro. J'ai l'impression que l'option userinterfaceonly n'est valable que sur une seule feuille. Donc comment faire pour qu'à chaque fois que j'exécute une macro toutes les feuilles se déprotègent ou sinon comment utiliser userinterfaceonly dans le fichier pour ne plus que le message d'erreur s'affiche
 
G

Guest

Guest
Re : Est ce possible???

Re,

Mets dans workbook_open:

Code:
Dim sh As Worksheet
    For Each sh In Worksheets
        sh.Protect MotDePasse, userinterfaceonly:=True
    Next sh

En remplaçant MotDePasse par ton mot de passe réel.

Enregistre le fichier -> ferme le -> rouvre le

Cela devrait le faire.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 629
Messages
2 090 321
Membres
104 491
dernier inscrit
anthony2812