[Vba/Excel 2003] Bloquer l'accés en écriture
Tyrannide
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
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:
j'avais pensé à une ligne du genre selection.Locked=true mais ça ne marche pas
merci d'avance pour votre aide
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:
- [Vba/Excel 2003] Bloquer l'accés en écriture
- Liste déroulante excel - Guide
- Écriture facebook - Guide
- Ecriture en gras - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
2 réponses
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.
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.
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.
Bonne suite
'"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