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

  • Initiateur de la discussion Initiateur de la discussion jujulebiker85
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jujulebiker85

Guest
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...
 
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?
 
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

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

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 modification par un modérateur:
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 😡

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

Dernière édition:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
489
Retour