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

Signaler
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
-
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
-
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 : /

4 réponses

Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
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+
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013

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?
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
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+
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013

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 : )