XL 2016 Verrouillage partiel de cellules

Olivier GUILLOT

XLDnaute Nouveau
Bonjour à tous,

J'ai une recherche sur du développement VBA : Je souhaiterai bloquer en saisie les cellules qui se trouvent en dessous de cette cellule et ce depuis la cellule A1, et pas les suivantes. Je m'explique

Cette cellule qui déclenche la condition est fusionnée et comporte une condition :
- prévisionnel : les cellules en dessous sont modifiables ;
- réalisé : les cellules en dessous sont bloquées
- les cellules situées dès le début de la feuille doivent etre bloquée en saisie jusqu'à la dernière cellule 'réalisé' rencontrée

ci joint mon fichier pour etre encore plus complet et précis

Merci de votre aide.
 

Pièces jointes

  • test.xlsm
    77.8 KB · Affichages: 27

Dranreb

XLDnaute Barbatruc
Bonjour.
Je dirais à priori, dans le module de l'objet Worksheet représentant la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 2 Then Exit Sub
Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
   Password:="xxx", UserInterfaceOnly:=True
Intersect(Target.MergeArea.EntireColumn, [3:100000], _
   UsedRange).Locked = Target.Value = "Réalisé"
End Sub
 

Olivier GUILLOT

XLDnaute Nouveau
Bonjour.
Je dirais à priori, dans le module de l'objet Worksheet représentant la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 2 Then Exit Sub
Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
   Password:="xxx", UserInterfaceOnly:=True
Intersect(Target.MergeArea.EntireColumn, [3:100000], _
   UsedRange).Locked = Target.Value = "Réalisé"
End Sub

Merci Dranreb

il semble que la fusion des cellules complique , j'ai libéré les cellules. Mais pour autant, le module n'arrive à pas limiter la protection sous les cellules "prévisionnel"? faut il définir deux type de cellules : celles en dessous des "réalisé" et celles en dessous des 'prévisionnel' ?

Encore merci pour votre aide précieuse.
 

Pièces jointes

  • test.xlsm
    80.8 KB · Affichages: 24

Dranreb

XLDnaute Barbatruc
En fait, vos explications n'étaient pas des plus limpides. Je crois comprendre maintenant qu'il ne fallait pas verrouiller les cellules non renseignées même en "Réalisé" ?
Vous dites bien verrouillage partiel, n'est-ce pas.
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PlageEnDessous As Range, Verrouillé As Boolean
If Target.Row <> 2 Then Exit Sub
Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
   Password:="xxx", UserInterfaceOnly:=True
Set PlageEnDessous = Intersect(Target.MergeArea.EntireColumn, [4:34])
Verrouillé = Target.Value = "Réalisé"
PlageEnDessous.Locked = Verrouillé
If Verrouillé Then PlageEnDessous.SpecialCells(xlCellTypeBlanks).Locked = False
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 459
Membres
103 547
dernier inscrit
matospi