Interdire modification cellule B1 si la cellule A=1 + msgbox

Bonjour,

Je souhaiterai interdire la modification des cellules de la colonne B en fonction des valeurs de la colonne A, et mettre un message d'erreur.

Si la cellule A1=0, alors, si B1 est sélectionnée pour être modifiée --> Interdire la modification et mettre un message d'erreur

Sinon aucune action.

J'ai joint un fichier teste mais j'utiliserais après cette macro dans une feuille contenant un tableau où des valeurs seront ajoutées régulièrement dans la colonne A. Il faut donc que la macro puisse bien fonctionner à chaque nouvelle entrée dans la colonne A.

J'ai commencé ce code mais je ne sais pas bien l'appliquer car débutante :

"Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim wksOne As Worksheet

If wksOne.Cells(1, 1).Value = 0 Then

wksOne.Range("B1").AllowEdit = False

End If

If Range("B1").Select And wksOne.Range("B1").AllowEdit = False Then

MsgBox ("Ne peut être modifié")

End If

End Sub"

Pourriez-vous me donner un coup de pouce ?

Merci !!

19test.xlsx (8.57 Ko)

Bonjour,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Application.EnableEvents = False
If Target.Offset(0, -1) = 0 Then
Target.ClearContents
MsgBox ("Ne peut être modifié")
End If
Application.EnableEvents = False
End Sub

Bonjour,

Merci pour cette aide. J'ai vu le message apparaître une seule fois.

Mais je n'arrive plus à faire fonctionner la macro. Quand je suis dans la colonne 2 et qu'il y a 0 dans la colonne 1, je n'ai pas d'interdiction d'écriture.

J'ai mis le code dans la Feuil1 directement dans le développeur.

C'est bien comme cela (voir capture+fichier) ?

capture
4test.xlsm (13.32 Ko)

re,

mea-culpa

en dernière ligne, il faut mettre à true

Application.EnableEvents = True

modifie la macro et exécute une fois la macro suivante pour réactiver les événements avant de faire un test sur la feuille.

Sub reset()
Application.EnableEvents = True
End Sub

C'est bon j'ai bien le message qui apparaît sur mon excel de test.

En ajoutant la macro sur mon vrai fichier, le message n'apparaît que si je modifie une cellule grisée, puis que j'annule.

J'ai ajouté dans le fichier Test un extrait de mon tableau pour mieux comprendre. La macro va donc devoir s'appliquer quand je suis dans la colonne 4.

Si j'essaie de modifier la colonne 4 alors qu'il y a déjà un 0 dans la colonne 3, le message doit s'afficher.

Là, il ne s'affiche qu'après avoir modifié une fois la colonne 4, et annulé.

Qu'en pensez-vous ?

Merci !!

12test.xlsm (18.21 Ko)

re,

il faudrait peut-être modifier les formules de la colonne C en cas d'erreur sur la colonne B

=SIERREUR(SI(OU([@Date]="";ET(NB.SI.ENS([Texte Temps d''arrêt total];"<>null";[Date];[@Date])>0;[@[Texte Temps d''arrêt total]]="null"));0;1);0)

Oui je peux appliquer cela mais pour le moment je n'ai pas d'erreur dans la colonne B. La valeur "null" est bien normale.

Je viens de comprendre que la macro ne m'affiche pas le message,même si il y a 0 dans la colonne C, car si j'écris dans la colonne D, ma formule en colonne C devient =1.

La formule en colonne C est dépendante de la valeur en colonne D (indirectement via la colonne B).

Il faudrait donc que la macro puisse fonctionner dès que je double clique dans une cellule de la colonne D (avec une valeur=0 en colonne C), mais avant que j'écrive dedans pour ne pas modifier la valeur en colonne C.

Ce serait possible ?

Je voudrais éviter que la macro fonctionne à chaque sélection d'une cellule grisée car ça deviendrait inutilisable.

Rechercher des sujets similaires à "interdire modification msgbox"