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

ca me gave encore un plantage, la maccro plante quand je fais un nombre décimal en faisant la virgule avec le . du bouton suppr du clavier numérique. Dans exel cette touche fait une virgule et du coup la macro plante alors que c'est une touche . du coup je suis obliger d'utiliser la touche . du clavier lettre et la ça marche et ce meme point se transforme en ,
On dirait que la maccro ne reconnait pas cette touche avez vous une idée de ce beug?
 

job75

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

Re,

En effet VBA n'accepte que le point comme séparateur décimal.

Il faut écrire dans la macro Worksheet_Change :

Code:
Dim valsaisie$
valsaisie = Replace(Target, ",", ".")
Fichier (6).

A+
 

Pièces jointes

  • Historiquel(6).xls
    54.5 KB · Affichages: 29

job75

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

Re,

La solution par mémorisation était un peu lourding.

Cette solution s'en passe :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Set Target = Intersect([I4:I300,K4:K300,U4:U300], Target)

If Not Target Is Nothing And Target.Count = 1 Then
  If IsNumeric(Evaluate(Target.Formula)) Then
    Dim valsaisie$
    valsaisie = Replace(Target, ",", ".")
    Application.EnableEvents = False
    Application.Undo
    Target = IIf(Target.HasFormula, Target.Formula & "+", "=") & valsaisie
    Application.EnableEvents = True
  Else
    If Not IsEmpty(Target) Then
      Dim flag As Boolean
      flag = True
      MsgBox "Saisie incorrecte, numérique uniquement !", 48
    End If
  End If
End If

If Not Target Is Nothing Then
  For Each Target In Target
    If Not IsNumeric(Evaluate(Target.Formula)) Then
      Target.Select
      If Not flag Then _
      MsgBox "Vous ne devez pas effacer les valeurs, mais les remplacer !", 48
      Application.EnableEvents = False
      Application.Undo
      Application.EnableEvents = True
      Exit For
    End If
  Next
End If

End Sub
Fichier joint.

A+
 

Pièces jointes

  • Historique sans mémorisation(1).xls
    48.5 KB · Affichages: 38

jujulebiker85

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

je viens d'utiliser ta dernière version et j'ai ce beug qui n'apparait pas sur l'autre version

phrase en jaune:
If Not Target Is Nothing And Target.Count = 1 Then

erreur d'éxécution 91
variable objet ou variable de block with non définie

j'ai ce probleme quand j'écris dans d'autre cellule qui ne sont pas mentionner dans la maccro
 
Dernière édition:

job75

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

Bonjour jujulebiker85, le forum,

Oui, la solution précédente ne va pas du tout :mad:

Cette nouvelle mouture est je pense correcte :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Set Target = Intersect([I4:I300,K4:K300,U4:U300], Target)
If Target Is Nothing Then Exit Sub

If Target.Count = 1 Then
  If IsNumeric(Evaluate(Target.Formula)) Then
    Annule 0, Target
  Else
    Target.Select
    Annule IIf(IsEmpty(Target), 1, 2)
  End If
Else
  If Application.CountA(Target) Then
    Annule 3
  Else
    Annule 1
  End If
End If

End Sub

Sub Annule(mes As Byte, Optional cel As Range)
Dim saisie$

If mes Then MsgBox Switch( _
mes = 1, "Effacement des historiques non autorisé !", _
mes = 2, "Saisie incorrecte, numérique uniquement !", _
mes = 3, "Entrées multiples non autorisées !"), 48

On Error Resume Next 'si cel n'existe pas
saisie = Replace(cel, ",", ".")
Application.EnableEvents = False
Application.Undo
cel = IIf(cel.HasFormula, cel.Formula & "+", "=") & saisie
Application.EnableEvents = True

End Sub
Fichier (2) joint.

Noter que la feuille est protégée avec mot de passe.

Ceci évite la suppression de cellules, lignes ou colonnes.

A+
 

Pièces jointes

  • Historique sans mémorisation(2).xls
    44 KB · Affichages: 39
Dernière édition:

job75

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

Re,

Dans ce fichier (3) la macro Worksheet_Change est un peu plus courte.

A+
 

Pièces jointes

  • Historique sans mémorisation(3).xls
    49.5 KB · Affichages: 32

job75

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

Bonjour jujulebiker85, le forum,

La validation d'une formule, par erreur ou volontairement, peut donner un résultat imprévu.

J'ai donc ajouté un contrôle de sécurité dans la macro Annule :

Code:
Sub Annule(mes As Byte, Optional cel As Range)
Dim saisie$, secur As Boolean

If mes Then MsgBox Switch( _
mes = 1, "Effacement des historiques non autorisé !", _
mes = 2, "Saisie incorrecte, numérique uniquement !", _
mes = 3, "Entrées multiples non autorisées !"), 48

On Error Resume Next 'si cel n'existe pas
saisie = Replace(cel, ",", ".")
secur = cel.HasFormula
Application.EnableEvents = False
Application.Undo
If secur Then
  MsgBox "Vous avez validé une formule... Par sécurité elle n'a pas été prise en compte.", , "Sécurité"
Else
  cel = IIf(cel.HasFormula, cel.Formula & "+", "=") & saisie
End If
Application.EnableEvents = True

End Sub
Fichier (4).

A+
 

Pièces jointes

  • Historique sans mémorisation(4).xls
    50.5 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet