Empêcher "Effacer le Contenu" via menu contextuel

Bonsoir à Tous,

J'ai trouvé ce code pour empêcher d'effacer le contenu ou supprimer le contenu d'une cellule qui est renseignée

par le biais du menu contextuel.

Mais je veux étendre la sélection de A2 à K1000.

Ce code bloque seulement la cellule A2.

Je ne trouve pas la solution.

Besoin d'Aide S.V.P.

Merci

Jean

Dans ThisWorkbook:

Option Explicit
Private Sub Workbook_Open()                     'Syntaxe qui s'exécute à l'ouverture du Classeur'
'Désactivation de la commande "Supprimer Dans le Menu Principal'
Application.CommandBars(1).Controls("Edition").CommandBar.Controls("Supprimer...").Enabled = False
'Désactivation de la commande Dans le Menu Contextuel'
Application.CommandBars("Cell").Controls("Supprimer...").Enabled = False
'Fin Désactivation'
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Rétabli les Controls Commandes en sortant du Fichier'
Application.CommandBars(1).Controls("Edition").CommandBar.Controls("Supprimer...").Enabled = True
Application.CommandBars("Cell").Controls("Supprimer...").Enabled = True
'Fin Rétabli les Controls Commandes en sortant du Fichier'
End Sub

Dans Feuil1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
If Target = "" Then Application.Undo
End Sub

Bonjour,

attend d'être ceinture noire avant de modifier l'environnement de l'utilisateur...

Si ton programme plante tu le laisses avec un excel bancal, peut-être inutilisable. Et si c'est pendant ta période de congé tu risques d'être maudit jusqu'à la 10e génération.

Pas eu envie de tester ton fichier.

Supprime ce que tu as mis dans ThisWorkbook, ceci devrait suffire :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [A2:K1000]) Is Nothing Then Exit Sub
    If Target = "" Then Application.Undo
End Sub

eric

Bonsoir eriiic,

Ça ne plante pas, mais ne fonctionne pas non plus.

Je continue mes recherches.

Merci de vous être penché sur mon sujet.

Jean.

Bonjour,

Bonjour,

La proposition d'Eric fonctionne parfaitement, et comme il l'écrit, il n'y pas utilité de modifier l'environnement de l'utilisateur.

Assure toi que les évènements sont activés (voir propriété EnableEvents).

Cdlt.

Bonjour à tous,,

Correctif si jamais la suppression s'effectue sur une plage :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl As Range, c As Range, ok As Boolean
    Static noEvents As Boolean
    If noEvents Then Exit Sub
    Set pl = Intersect(Target, [A2:K1000])
    If Not pl Is Nothing Then
        ok = True
        For Each c In pl
            If c = "" Then ok = False: Exit For
        Next c
        noEvents = True
        If Not ok Then Application.Undo
        noEvents = False
    End If
End Sub

eric

Bonjour eriiic & Jean-Eric,

La deuxième solution d'eriiic fonctionne bien.

Merci de votre Aide à vous deux.

Jean.

Rechercher des sujets similaires à "empecher effacer contenu via menu contextuel"