Verrouiller ou déverrouiller des cellules excel VBA
Bonjour à toutes et tous
Je veux premièrement vous remercier pour ce très beau site
Je suis débutante en VBA. Je veux savoir comment puis-je verrouiller des cellules selon les données saisie dans une colonne d'un tableau.
exemple si j'entre la valeur Entrée certaine cellules se verrouille et d'autre se déverrouille dans la même ligne.
et si j'entre la valeur Sortie d'autres cellules se verrouille et d'autre se déverrouille dans la même ligne.
J'espère que vous comprenez mon français
Je vous remercie d'avance
Soria
verrouiller ou déverrouiller
Bonjour Parmi,
Ta proposition souffre un léger inconvénient : le vicieux peut parfaitement modifier certaines valeurs entrées précédemment par d'autres.
C'est pourquoi je propose de limiter la saisie aux cellules accessibles de la ligne active.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Range("A" & Target.Row) <> "Entrée" And ActiveSheet.Range("A" & Target.Row) <> "Sortie" Then
MsgBox "attendu mot [ Sortie ] ou [ Entrée ]"
Application.EnableEvents = False
Target.ClearContents
Target.Activate
Application.EnableEvents = True
Else
With ActiveSheet
.Unprotect 'mot de passe si nécessaire
.Range("B3:H8").Locked = True
If Range("A" & Target.Row) = "Entrée" Then
.Range("B" & Target.Row & ":H" & Target.Row).Locked = False
.Range("B" & Target.Row & ",D" & Target.Row & ",F" & Target.Row & ",G" & Target.Row).Locked = True
End If
If .Range("A" & Target.Row) = "Sortie" Then
.Range("B" & Target.Row & ":H" & Target.Row).Locked = False
.Range("B" & Target.Row & ",D" & Target.Row & ",E" & Target.Row & ",F" & Target.Row).Locked = True
End If
.Protect
End With
End If
End Sub |
Cordialement,
1 pièce(s) jointe(s)
verrouiller ou déverrouiller
Bonsoir,
Ci-joint le fichier. le code est sur la feuille 1, celle concernée par la question.
Bien entendu tu es libre de mettre en lieu et place le code qui te convient le mieux.
j'ai rajouté une boite de validation en colonne A qui évitera des saisies erronées.
Cette colonne ne sera jamais verrouillée, du moins pas à cause du code.
la liste nécessaire à la boite de validation se trouve en feuille 2 mais bien entendu on peut la mettre à toute autre endroit qui ne sera jamais occupé.
Edit: je n'avais pas vu la dernière réponse de Parmi avant de poster.
réponse au demeurant intéressante je ne connaissais pas sheetchange de l'objet thisworkbook
Cordialement,