Modification d'une macro VBA 2

Bonjour,

J'utilise la macro suivante qui me permet de verrouiller la plage Ax:Dx quand on inscrit quelque chose en Ex :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("E7:E106"), Target) Is Nothing Then

If Target <> "" Then

ActiveSheet.Unprotect

r = Target.Row

Range("A" & r & ":D" & r).Locked = True

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End If

End If

End Sub

Maintenant j'aimerais apporter deux modifications à cette macro :

- 1) il faudrait que l'action soit réversible. C'est à dire que par exemple quand on remplit la cellule E10 la plage A10:D10 soit verrouillée et quand on supprime ce qu'il y a en E10 la plage A10:D10 soit déverrouillée.

-2) la macro ne fonctionne pas quand la cellule en colonne E contient une formule. Est-ce que ça serait possible avec une formule de type en Ex : =si(Ax<>"";"X";"") ?

Merci d'avance,

Vivien

Bonsoir,

et quand on supprime ce qu'il y a en E10 la plage A10:D10 soit déverrouillée.

Normalement, une fois verrouillé et protégé, tu ne peux plus supprimer...

(A noter aussi que les cellules étant verrouillées par défaut, il a fallu d'abord que tu les déverrouilles préalablement à la mise en oeuvre de ta macro...)

la macro ne fonctionne pas quand la cellule en colonne E contient une formule.

La macro aura fonctionné à l'insertion de la formule, et donc une fois la formule saisie, la plage sera verrouillée. La protection n'empêche pas la formule de fonctionner, c'est même fait pour ça ! Mais l'évènement Calculate n'est pas l'évènement Change...

Cordialement.

Bonjour,

ok, merci pour ces précisions.

Vivien

Rechercher des sujets similaires à "modification macro vba"