[Vba/Excel 2003] Bloquer l'accés en écriture

Tyrannide -  
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je voudrais bloquer l'accès en écriture sur UNE cellule de ma feuille au sein d'une macro VBA:
Dans mon programme j'ai une Sub qui permet de griser les cellules d'une colonne en fonction du contenu d'une autre. Par exemple si la case D2 contient "Comptable" je veux griser et bloquer la case H2. Et si la case D2 contient "Mainteneur", la case H2 est libre d'accès mais c'est la case I2 qui se grise et se bloque.

J'arrive déjà à Griser les cases concernées:
  Sheets(Utilisateurs).Range("H" & iLign).Select
 Selection.Interior.ColorIndex = 48 'Gris
/*ou*/
   Sheets(Utilisateurs).Range("I" & iLign).Select
   Selection.Interior.ColorIndex = 48 'Gris


j'avais pensé à une ligne du genre selection.Locked=true mais ça ne marche pas

merci d'avance pour votre aide

A voir également:

2 réponses

Rastamanbigoud Messages postés 370 Date d'inscription   Statut Membre Dernière intervention   91
 
Bonjour,

Ce que tu peux faire c'est que lorsque l-on clique su la cellule une TextBox s'affiche avec un message indiquant que cette cellule ne peut être rempli mais que si la condition case D2 contient "Mainteneur" la TextBox ne s'affiche pas.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

'"Je voudrais bloquer l'accès en écriture sur UNE cellule de
' ma feuille au sein d'une macro VBA:"
'"Dans mon programme j'ai une Sub qui permet de griser les cellules d'une colonne en
'fonction du contenu d'une autre. Par exemple si la case D2 contient ""Comptable""
'je veux griser et bloquer la case H2. Et si la case D2 contient ""Mainteneur"",
'la case H2 est libre d'accès mais c'est la case I2 qui se grise et se bloque."

Ce n'est pas un bloquage de cellule mais une non selection.

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Plage As Range, cel As Range
  'Plage a definir
  Set Plage = Range("D2:D100")
  'Changement de couleur (mettre la meme que dans Worksheet_SelectionChange) suivant Dx
  For Each cel In Plage
      If Cells(cel.Row, 4) = "Comptable" Then
          Cells(cel.Row, 9).Interior.Pattern = xlNone
          Cells(cel.Row, 8).Interior.Color = &H808080
      ElseIf Cells(cel.Row, 4) = "Mainteneur" Then
          Cells(cel.Row, 8).Interior.Pattern = xlNone
          Cells(cel.Row, 9).Interior.Color = &H808080
      End If
  Next cel
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim Plage As Range, cel As Range
  'Plage a definir
  Set Plage = Range("D2:D100")
  'Changement de couleur suivant Dx et changement de couleur par programmeur
  For Each cel In Plage
      If Cells(cel.Row, 4) = "Comptable" Then
          Cells(cel.Row, 9).Interior.Pattern = xlNone
          Cells(cel.Row, 8).Interior.Color = &H808080
      ElseIf Cells(cel.Row, 4) = "Mainteneur" Then
          Cells(cel.Row, 8).Interior.Pattern = xlNone
          Cells(cel.Row, 9).Interior.Color = &H808080
      End If
  Next cel
  'Empeche la selection Hx ou Ix suivant Dx
  If Cells(Target.Row, 4) = "Comptable" And Target.Column = 8 Then
      'Selection A1 a adapter)
      Cells(1, 1).Select
  ElseIf Cells(Target.Row, 4) = "Mainteneur" And Target.Column = 9 Then
      'Selection A1 (a adapter)
      Cells(1, 1).Select
  End If

End Sub


Bonne suite
0