Message d'alerte Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
s
sophang
Membre fidèle
Membre fidèle
Messages : 232
Inscrit le : 30 mars 2009
Version d'Excel : excel 2007

Message par sophang » 13 mai 2016, 10:02

Bonjour au forum,


Je voudrais savoir s'il est possible de créer un message d'alerte sur Excel si un utilisateur tente de supprimer ou d'insérer une ligne et/ou une colonne ?



En remerciant de votre aide.
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 13 mai 2016, 10:11

Bonjour,

OUI ! :D
Du moins sur le principe. Ensuite savoir ce que tu veux exactement pour tester au plus près lors de l'évènement Change, et définir les actions dans les différents cas à distinguer.

Cordialement.
s
sophang
Membre fidèle
Membre fidèle
Messages : 232
Inscrit le : 30 mars 2009
Version d'Excel : excel 2007

Message par sophang » 13 mai 2016, 14:09

Dans mon exemple du fichier joint, je souhaite que :
l’utilisateur peut uniquement saisir des données sur la plage des cellules C2 à D8 (zone verte).
Il ne peut en aucun cas modifier la forme du tableau en insérant des lignes ou des colonnes.
J’ai mis le code suivant, mais cela ne fonctionne pas. Quand l’utilisateur insère une ligne, il voit bien le message d’alerte mais son action n’est pas bloquée.
Comment puis-je faire ?
Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox "Merci de ne pas modifier cette feuille !"

End Sub
TEST 13052016.xlsm
(15.84 Kio) Téléchargé 34 fois
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 13 mai 2016, 14:31

C'est plus restrictif que ce que tu disais au départ...

Essaie :
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim annul As Boolean
    If Intersect(Target, Me.Range("C2:D8")) Is Nothing Then
        annul = True
    ElseIf Intersect(Target, Me.Range("C2:D8")).Address <> Target.Address Then
        annul = True
    ElseIf Target.Count > 1 Then
        annul = True
    End If
    If annul Then
        MsgBox "Merci de ne pas modifier cette feuille !"
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
    End If
End Sub
Cordialement.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Message alerte
    par Nismo » 6 décembre 2018, 11:56 » dans Excel - VBA
    5 Réponses
    165 Vues
    Dernier message par ric
    6 décembre 2018, 14:55
  • Message alerte
    par Nismo » 9 décembre 2018, 14:28 » dans Excel - VBA
    13 Réponses
    389 Vues
    Dernier message par Nismo
    10 décembre 2018, 09:07
  • Message d'alerte.
    par rahimpamelo » 21 septembre 2016, 10:48 » dans Excel - VBA
    5 Réponses
    404 Vues
    Dernier message par mdo100
    21 septembre 2016, 14:21
  • Message alerte
    par gnappoma » 20 février 2017, 15:55 » dans Excel - VBA
    2 Réponses
    289 Vues
    Dernier message par gnappoma
    20 février 2017, 16:54
  • message d'alerte
    par Engels » 5 novembre 2016, 12:07 » dans Excel - VBA
    16 Réponses
    676 Vues
    Dernier message par MFerrand
    9 novembre 2016, 08:54
  • Alerte message box
    par MARK_TK » 5 février 2016, 21:33 » dans Excel - VBA
    6 Réponses
    382 Vues
    Dernier message par MARK_TK
    7 février 2016, 09:15