Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Protection cellules

1 réponse
Avatar
timili
Bonjour,
Merci pour la réponse,
Mais par manque d'expérience, je m'imaginais que pour verrouiller ou pour masquer des cellules, la méthode était plus simple, et je n'ai pas donné les bonnes informations,
Mon souhait est:
Pour des feuilles nommées "calendrier", "calcul mois","sem 1 cal", "sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal", les masquer, et laisser les calculs se réaliser

Pour une feuille nommée "atelier", laisser la plage de cellules b5 à c30 modifiables et verrouiller le reste

Pour des feuilles nommées "sem 1", "sem 2", "sem 3", "sem 4", "sem 5", appliquer la méthode que j'ai décri dans le dernier fichier joint

Masquer toutes les formules, verrouiller les cellules de A 1 à IV 110, en laissant certaines plages modifiables, laisser les calculs se réaliser, et la macro s'exécuter,

Et éventuellement empêcher la copie de ce fichier excel.
Cordialement
Merci pour votre aide,
timili

1 réponse

Avatar
michdenis
Bonjour,

Dans un module standard de ton projetVBA, copie ce qui suit.
Tu dois enlever tous les mots de passe sur tes feuilles protégées
Pour toutes les feuilles, il y aura un mot de passe appelé "MotDePasse"
que tu peux modifier pour un autre. Conserve le même MotDePasse
pour toutes les feuilles.

Tu enregistres ton fichier.
à chaque ouverture de fichier, la macro "Auto_Open" se déclenchera et
appellera la macro Traitement.

IMPORTANT : Ici c'est un forum d'entraide. La participation du
demandeur est requise. Il se peut que tu aies moins de chance les
prochaines fois si tu te contentes d'énumérer le cahier de charge
que tu voudrais voir accomplir par des bénévoles pour ton application !

'----------------------------------
Sub Auto_Open()
On Error Resume Next
Call traitement
End Sub
'----------------------------------
Sub traitement()
Dim Arr(), ArrFeuille(), ArrSem(), DerLig As Long
Dim B As Long, Elt As Variant, Plg As Variant

'liste des feuille à masquer et non protéger
ArrFeuille = Array("calendrier", "calcul mois", "sem 1 cal", _
"sem 2 cal", "sem 3 cal", "sem 4 cal", "sem 5 cal")

'Liste des feuille semaine
ArrSem = Array("sem 1", "sem 2", "sem 3", "sem 4", "sem 5")
'Un tableau pour les plages d'adresses
Arr = Array("C:AJ", "BC:CJ", "DC:EJ", "FC:GJ", "HC:IJ")

'Rend non visible la liste des feuilles
For Each Elt In ArrFeuille
Sheets(Elt).Visible = xlSheetHidden
'xlSheetHidden : permet d'afficher une feuille
'par le menu de la feuille de calcul
'xlVeryHidden : La feuille devient inaccessible
'par une commande de la feuille de calcul.
'doit utiliser une ligne de code
Next

'Seule la plage B5:C30 est accessible manuellement
'Les macros sur la feuille peuvent s'exécuter.
'"MotDePasse" est le mot de passe de protection de la feuille
With Sheets("Atelier")
.Unprotect "MotDePasse"
.Cells.Locked = True
.Range("B5:C30").Locked = False
.Protect "MotDePasse", True, True, True, True
End With

'pour toutes les feuilles SEM,
'- Les formules ne sont pas visibles
'-Plages mentionnées accessibles manuellement
'-La feuille est accessible par macro
'- Seules les cellules non protégées sont sélectionnables.
For Each Elt In ArrSem
With Worksheets(Elt)
.Unprotect "MotDePasse"
.Cells.Locked = True
.UsedRange.SpecialCells(xlCellTypeFormulas).FormulaHidden = True
For Each Plg In Arr
'Dernière cellule occupée dans la plage
DerLig = .Range(Elt).Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
For a = 24 To DerLig Step 4
.Range(Plg).Rows(a).Locked = False
Next
Next
.Protect "MotDePasse", True, True, True, True
End With
Next
End Sub
'----------------------------------





"timili" a écrit dans le message de groupe de discussion :

Bonjour,
Merci pour la réponse,
Mais par manque d'expérience, je m'imaginais que pour verrouiller ou pour
masquer des cellules, la méthode était plus simple, et je n'ai pas donné les
bonnes informations,
Mon souhait est:
Pour des feuilles nommées "calendrier", "calcul mois","sem 1 cal", "sem 2 cal",
"sem 3 cal", "sem 4 cal", "sem 5 cal", les masquer, et laisser les calculs se
réaliser

Pour une feuille nommée "atelier", laisser la plage de cellules b5 à c30
modifiables et verrouiller le reste

Pour des feuilles nommées "sem 1", "sem 2", "sem 3", "sem 4", "sem 5",
appliquer la méthode que j'ai décri dans le dernier fichier joint

Masquer toutes les formules, verrouiller les cellules de A 1 à IV 110, en
laissant certaines plages modifiables, laisser les calculs se réaliser, et la
macro s'exécuter,

Et éventuellement empêcher la copie de ce fichier excel.
Cordialement
Merci pour votre aide,
timili