Blocage de ligne selon valeur d'une cellule
Bonjour,
Est-ce que quelqu'un aurait l'amabilité de me venir en aide s'il vous plaît.
Voilà mon problème.
Je cherche à bloquer une ligne en fonction de la valeur de la cellule AA.
Exemple: ligne 2 si en AA il y a OUI, alors je souhaite bloquer les cellules B à Z de cette ligne. Si il y a NON en AA alors je souhaite que les cellules AY à BC soient bloquées.
Je voudrait que cela marche comme cela pour toutes les lignes du tableur.
Est-ce que quelqu'un peut m'aider s'il vous plaît.
J'ai déjà réussi seulement je ne sais pas pourquoi j'ai repris mon fichier 2 semaines plus tard et ma macro ne marchait plus.
J'avais utiliser la macro suivante :
Private Sub Worksheet_Change2(ByVal Target As Range)
If ActiveSheet.Range("AA" & Target.Row) <> "OUI" And ActiveSheet.Range("AA" & Target.Row) <> "NON" Then
MsgBox "attendu mot [ OUI ] ou [ NON ]"
Application.EnableEvents = False
Target.ClearContents
Target.Activate
Application.EnableEvents = True
Else
With ActiveSheet
.Unprotect 'mot de passe si nécessaire
If Range("AA" & Target.Row) = "OUI" Then
.Range("AX" & Target.Row & ":BB" & Target.Row).Locked = False
.Range("C" & Target.Row & ":Z" & Target.Row).Locked = True
End If
If .Range("AA" & Target.Row) = "NON" Then
.Range("C" & Target.Row & ":Z" & Target.Row).Locked = False
.Range("AX" & Target.Row & ":BB" & Target.Row).Locked = True
End If
.Protect
End With
End If
End Sub
Seulement maintenant elle ne marche plus. Je ne comprend pas pourquoi. Help me please. Si quelqu'un saurait d'où peut venir mon problème ou bien aurait une autre macro qui marcherais mieux je lui en serais reconnaissant car je dois présenter mon tableur cet après midi.
D'avance merci pour tout
Bonjour Xandre, bonjour le forum,
L'événement Change2 n'existe pas ! Supprime le 2 et ton code refonctionnera... Toutefois, l'événementielle Change se réfère automatiquement à l'onglet dans lequel est est placée. ActiveSheet est donc superflu...
Ton code simplifié :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 27 Then Exit Sub
If Not Target.Value = "OUI" And Not Target.Value = "NON" Then
MsgBox "attendu mot [ OUI ] ou [ NON ]"
Application.EnableEvents = False
Target.ClearContents
Target.Activate
Application.EnableEvents = True
Else
Me.Unprotect 'mot de passe si nécessaire
Range("AX" & Target.Row & ":BB" & Target.Row).Locked = IIf(Target.Value = "OUI", False, True)
Range("C" & Target.Row & ":Z" & Target.Row).Locked = IIf(Target.Value = "OUI", True, False)
Me.Protect
End If
End SubMerci beaucoup pour ta réponse et ta réactivité cela marche même beaucoup mieux qu'avant.
Bonne journée.