XL 2019 Interdire l'utilisation de la touche supprimer

Steph44

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterai savoir s'il est possible d'empêcher l'utilisation de la touche supprimer sur deux cellules par exemple C79 et C80. J'aimerais également (si c'est possible) qu'un message apparaisse pour l'informer que cette touche supprimer n'est pas utilisable. Enfin, il faudrait malgré tout pouvoir la rendre accessible via un mot de passe.
L'utilisateur doit pouvoir saisir uniquement des valeurs numériques.

Je pense que c'est possible avec un code VBA mais je ne suis qu'un utilisateur exceptionnel du VBA et je ne sais pas en écrire. Je vois bien ou je veux en venir mais je ne sais pas le rédiger !!

Merci d'avance pour votre aide,

Cordialement,

Steph
 
Solution
Ceci dit, la solution d'@Eric C je la verrais plutôt comme ça...
VB:
Private Const RangeInterdit = "D3,G3"

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cellule As Range
   
    If Not Intersect(Target, ActiveSheet.Range(RangeInterdit)) Is Nothing Then
        For Each Cellule In ActiveSheet.Range(RangeInterdit)
            If Len(CStr(Cellule.Value)) = 0 Then
                Application.EnableEvents = False
                Application.Undo
                Application.EnableEvents = True
                Exit For
            End If
        Next Cellule
       
        If Not Cellule Is Nothing Then
            MsgBox "Ça va pas la tête d'effacer " & Cellule.Address(0, 0) & " ?"
        End If
    End If
End Sub

Staple1600

XLDnaute Barbatruc
Re

Sinon si ce n'est qu'une aide à la saisie
Données Validation
(Cela fonctionne)
la formule utilisée: =ESTNONTEXTE(C5)
Par contre , je n'arrive à comprendre pourquoi la macro équivalente refuse de fonctionner
VB:
Sub Macro1()
With [C5].Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:="=ESTNONTEXTE(C5)"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Achtung Baby!"
        .InputMessage = ""
        .ErrorMessage = "Attention!" & Chr(10) & "" & Chr(10) & "Vous ne devez saisir que des chiffres," & Chr(10) & ""
        .ShowInput = False
        .ShowError = True
    End With
End Sub
NB: C'est pareil, si je mets l'équivalent anglais de la formule.
 

Dudu2

XLDnaute Barbatruc
Ou encore, petite modif:
Code:
If Not Cellule Is Nothing Then
    MsgBox "Ça va pas la tête d'effacer " & Cellule.Address(0, 0) & " ?" & vbCrLf & _
           "Tu vas t'en prendre une belle en rentrant à la maison !"
End If
Perso, je préfère cette version
1665435772137.gif
 

Eric C

XLDnaute Barbatruc
Bonsoir les zamis du fil

@Dudu2 : Dans le code de ton post #15, on ne peut entrer de valeur dans les cellules concernées ? Or Steph44 a dit :
on doit pouvoir modifier la valeur numérique inscrite dans la cellule mais pas la supprimer avec la touche DEL du clavier. En résumé on doit pouvoir écrire 0 pas supprimer le contenu !
@ Staple1600 : Si... moi je vois tes messages 😂😂🤣😂😂

@+ Eric c
 

Staple1600

XLDnaute Barbatruc
Re

Par contre celle-ci fonctionne
VB:
Sub Macro2()
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:="0", Formula2:="10000000"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Alerte"
        .InputMessage = ""
        .ErrorMessage = "Uniquement des nombres!"
        .ShowInput = True
        .ShowError = True
    End With
End Sub
NB: Je publie le code VBA pour éviter les copie décran et un descriptif trop long.
 

Discussions similaires

Réponses
3
Affichages
648