Interdire l'utilisation des touches suppr et del dans une cellule

jujulebiker85

XLDnaute Nouveau
Re moi j'en demande beaucoup je sais mais ya que vous qui puissiez m'aidez:

est-il possible d'nterdire l'utilisation des touches suppr et del dans une cellule avec dévérouillage mot de passe?

merci je débute dans le vba...
 

jujulebiker85

XLDnaute Nouveau
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Bonjour à tous

Juste pour infos:
Avec Excel, il est interdit d'interdire comme y disait y'a 44 ans...
Car on peut toujours ouvrir un classeur en désactivant les macros.
Ce qui permet d'inhiber cette interdiction.

Mais pour si tu persistes néanmoins et pour répondre à ta dernière question, ajoute ceci en début de code:
If Target.Count > 1 Then Exit Sub

ça ne mache pas je peux toujours supprimer le contenu des cellules en en séléctionnant plusieurs
 

Staple1600

XLDnaute Barbatruc
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Re


Je viens de voir que ce que je proposais était déjà implémenter par BrunoM45 (que je salue au passage)
Code:
If Intersect([I4:I300,K4:K300,U4:U300], Target) Is Nothing Or Target.Count > 1 Then Exit Sub
 

Staple1600

XLDnaute Barbatruc
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Re

ATTENTION DANGER
Essayes de voir ce que tu peux faire en suivant cette piste
Code:
Sub DesactiveSUPPR()
Application.OnKey "{DEL}", ""
End Sub
Code:
Sub ActiveSUPPR()
Application.OnKey "{DEL}"
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Re

essayes ces macros sur un classeur vierge
Lances la macro qui désactives la touche SUPPR
Saisis une valeur dans une cellule puis tape ENTER
sélectionnes cette cellule puis appuie sur SUPPR
Normalement la valeur n'est pas effacée.

PS: Si tu débutes en VBA, cette méthode risque d'être problématique.
Cette macro n'était qu'une piste à suivre.
Pas une solution clé en mains.
 

job75

XLDnaute Barbatruc
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Bonjour le fil, le forum,

Il me semble qu'on tourne un peu en rond...

Voici une solution qui empêche l'effacement des nombres sur 3 plages.

Les valeurs sont mémorisées dans les noms définis Zone1 Zone2 Zone3.

Les macros dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Memorise Target, [I4:I300], "Zone1"
Memorise Target, [K4:K300], "Zone2"
Memorise Target, [U4:U300], "Zone3"
End Sub

Sub Memorise(Target As Range, plage As Range, zone$)
If Intersect(Target, plage) Is Nothing Then Exit Sub
Dim i, cel As Range
Application.EnableEvents = False
For i = 1 To plage.Count
  Set cel = plage.Cells(i)
  If Not (Intersect(cel, Target) Is Nothing Or IsNumeric(cel.Formula)) _
    Then cel = Application.Index(Evaluate(zone), i)
Next
ThisWorkbook.Names.Add zone, plage.Formula 'mémorise
ThisWorkbook.Names(zone).Visible = False 'masquage facultatif
Application.EnableEvents = True
End Sub
Pour définir les 3 noms au début, dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Me.Names.Add "Zone1", [I4:I300].Formula
Me.Names.Add "Zone2", [K4:K300].Formula
Me.Names.Add "Zone3", [U4:U300].Formula
'---masquage facultatif---
Me.Names("Zone1").Visible = False
Me.Names("Zone2").Visible = False
Me.Names("Zone3").Visible = False
'---évite le message à la fermeture---
Me.Saved = True
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Historiquel(1).xls
    55 KB · Affichages: 61

job75

XLDnaute Barbatruc
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Re,

J'ai intégré le code de votre macro Worksheet_Change (post #7) dans la mienne.

Sans oublier de déclarer la variable valsaisie.

Et j'ai modifié légèrement le test de la macro Memorise :

Code:
If Not (Intersect(cel, Target) Is Nothing Or IsNumeric(Evaluate(cel.Formula))) _
Fichier (2).

A+
 

Pièces jointes

  • Historiquel(2).xls
    57 KB · Affichages: 59

job75

XLDnaute Barbatruc
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Re,

Je modifie aussi le code de votre macro :

Code:
If Not Intersect([I4:I300,K4:K300,U4:U300], Target) Is Nothing And Target.Count = 1 Then
  Dim valsaisie
  On Error Resume Next
  Application.EnableEvents = False
  valsaisie = Target
  Application.Undo
  Target = IIf(Target.HasFormula, Target.Formula & "+", "=") & valsaisie
  Application.EnableEvents = True
End If
Votre test If Target <> "" Then beuguait si l'on entrait une valeur d'erreur...

Fichier (3).

A+
 

Pièces jointes

  • Historiquel(3).xls
    58 KB · Affichages: 39

jujulebiker85

XLDnaute Nouveau
Re : Interdire l'utilisation des touches suppr et del dans une cellule

j'aimerais remettre les messages

MsgBox "Saisie incorrecte, numérique uniquement !"
et
MsgBox "Vous ne devez pas effacer la valeur, mais la remplacer"

j'ai essayer de les réinserer mais il apparaisse tout le temp quand j'appuie sur n'importe quel touche
 

job75

XLDnaute Barbatruc
Re : Interdire l'utilisation des touches suppr et del dans une cellule

Re,

Voyez le fichier (4), je n'ai mis qu'un seul type de message, c'est bien suffisant.

Il a fallu remplacer On Error Resume Next par :

Code:
If IsNumeric(Evaluate(Target.Formula)) Then
A+
 

Pièces jointes

  • Historiquel(4).xls
    59 KB · Affichages: 42

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji