[Vba/Excel 2003] Bloquer l'accés en écriture
Tyrannide
-
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17414 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
- Acces rapide - Guide
- Mise en forme conditionnelle excel - 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