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

cs_hazzel 20 Messages postés jeudi 13 novembre 2008Date d'inscription 19 juillet 2013 Dernière intervention - 14 nov. 2008 à 17:04 - Dernière réponse : cs_hazzel 20 Messages postés jeudi 13 novembre 2008Date d'inscription 19 juillet 2013 Dernière intervention
- 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

dedenet2 372 Messages postés vendredi 27 juillet 2007Date d'inscription 22 juillet 2013 Dernière intervention - 17 nov. 2008 à 19:15
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dedenet2
cs_hazzel 20 Messages postés jeudi 13 novembre 2008Date d'inscription 19 juillet 2013 Dernière intervention - 17 nov. 2008 à 22:43
0
Utile
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
dedenet2 372 Messages postés vendredi 27 juillet 2007Date d'inscription 22 juillet 2013 Dernière intervention - 18 nov. 2008 à 19:15
0
Utile
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
cs_hazzel 20 Messages postés jeudi 13 novembre 2008Date d'inscription 19 juillet 2013 Dernière intervention - 19 nov. 2008 à 00:21
0
Utile
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.