[VBA / macro excel] déverrouillage de certaines cellules [Résolu]

Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Dernière intervention
19 juillet 2013
- - Dernière réponse : cs_hazzel
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Dernière intervention
19 juillet 2013
- 19 nov. 2008 à 00:21
Bonjour à tous!

Voici mon problème :
Sur une feuille protégée je souhterai retirer la protection d'une plage de cellule tout en interdisant l'accès et l'écritures aux autres.
Voici ma macro : 
 
'la feuille étant protégée via ActiveSheet.Protect

Worksheets("listing").Range("A" & Range("M1"), "F" & Range("M1")).Locked = False
Range("A" & Range("M1"), "F" & Range("M1")).Locked = False

Mais aucunes des deux ne fonctionnent si je ne déprotège pas la feuille entièrement. Or si je retire cette protection, toutes les cellules sont vulnérable.
Merci de votre attention ^_^

ps : j'ai du passé 30min sur le net pour trouver une réponse mais aucune ne me correspondaient concrètement : /
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Dernière intervention
22 juillet 2013
3
Merci
Bonjoir ,

Un exemple
--------------------------------------------------------
  'Zone utilisée
  Dim ZoneUtilisée As String
  'Plage utilisée sur la feuille de Excel
  ZoneUtilisée = "A1:M40"
 
  'On deprotege la feuille par le mot de passe "SESAME"
  Feuil1.Unprotect "SESAME"
  'Deverrouilles toutes les cellules de la plage
  Feuil1.Range(ZoneUtilisée).Locked = false
  'Reprotege la feuille et bloque les cellules non    autorisées par "SESAME"
  Feuil1.Protect "SESAME"

---------------------------------------------------------
Attention , ça ne marche pas avec les cellules fusionnées.
Pour résumer , il faut deproteger la feuille , debloquer
les cellules pour autoriser l'écriture puis reproteger
la feuille.
Ceci est un exemple à exploiter..
Bonne chance !
A+

Merci dedenet2 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de dedenet2
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Dernière intervention
19 juillet 2013
0
Merci
Salut, je te remerci pour ta réponse, en fait je ne savais pas qu'on pouvais retirer la protection de certaine cellule quand bien même toute la feuille est remis sous protection.

Ce ci étant, je voulais savoir comment reprotéger ces cellules une fois qu'elles sont remplis, je m'explique, lorsque l'utilisateur a rempli la cellule et qu'il passe à la suivante, cette cellule soit de nouveau sous protection?
Commenter la réponse de cs_hazzel
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Dernière intervention
22 juillet 2013
0
Merci
Salut ,

Ce code verrouille les cellules non vides.
J'utilise la commande SpecialCells(xlCellTypeBlanks)




pour
trouver les cellules vides.
Ceci est un exemple qu'il faut adapter à ton code.

--------------------------------------------------------
  Private Sub Worksheet_Change(ByVal Target As Range)

  'Zone utilisée
  Dim ZoneUtilisée As String
  'Plage utilisée sur la feuil1 de Excel
  ZoneUtilisée = "A1:M40"
 
  'On deprotege la feuille par le mot de passe "SESAME"
  Feuil1.Unprotect "SESAME"
  'Verrouilles toutes les cellules de la plage
  Feuil1.Range(ZoneUtilisée).Locked = True
  'Deverouilles les cellules vides de la plage
  Feuil1.Range(ZoneUtilisée).SpecialCells  (xlCellTypeBlanks).Locked = False
  'Bloque la saisie des cellules non vides en protégeant la feuil1 par "SESAME"
  Feuil1.Protect "SESAME"

---------------------------------------------------------

Essaie ce code d'abord.
J'espere reponse un peu à tes questions.
Donne des nouvelles
A+
Commenter la réponse de dedenet2
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Dernière intervention
19 juillet 2013
0
Merci
Un grand merci! Tes conseils sont d'une aide précieuses!
Les macro que j'ai effectué fonctionnent à présent ^_^

Du moins en ce qui concerne l'automatisme des cellules qui se verrouille lorsqu'elles sont remplies, je l'ai remplacé par une macro qui reverrouille l'intégralité de la feuille. Bon ok ca devient du manuel là ; ) Mais je prends note de tes macros car cela me permet de mieux comprendre le VBA et de l'exploiter différement.

Encore merci pour ton aide : )
Commenter la réponse de cs_hazzel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.