XL 2016 Interdire la suppression "suppr"

maxd88

XLDnaute Nouveau
Bonjour, j'ai un formulaire Excel que mes employés doivent remplir, pour une raison précise mais longue à expliquer :

Je veux que dès qu'un salarié fait un choix dans un menu déroulant (colonne C), la date/heure s'inscrit et qu'on ne puisse plus la changer.
1. J'ai fait quelques manips mais la touche SUPPR fonctionne encore :( Comment y remédier ?
2. Et quand on SUPPR et change le choix dans le menu déroulant la date/heure se met à jour, alors que je voudrai la date / heure initiale.

Comment faire ? Au moins pour le point 1.

A priori j'ai la réponse ici mais je ne sais pas insérer ce code : https://forum.excel-pratique.com/excel/interdire-touche-supprimer-t100946.html
Merciii.
 

Pièces jointes

  • Exempled.xlsx
    56.1 KB · Affichages: 7
Dernière édition:

Franc58

XLDnaute Occasionnel
Bonjour, voici une méthode, j'ai ajouté la touche BACKSPACE qui permet aussi d'effacer le contenu d'une cellule, si ce n'est pas ce que tu veux, supprime la ligne.
Ajoute ce code au module ThisWorkbook :

Code:
Private Sub Workbook_Open()

    Application.OnKey Key:="{DEL}", Procedure:="DoNothing"

    Application.OnKey Key:="{BACKSPACE}", Procedure:="DoNothing"

End Sub

Et celui-ci dans un module standard:

Code:
Public Sub DoNothing()

    ' Ne fait rien

End Sub

En relisant ta demande je m'aperçois que tu veux peut-être interdire ces touches pour une ou des cellules en particulier, si c'est le cas alors fais ceci:

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' Vérifie si la sélection est dans la plage de cellules souhaitée
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        ' Désactive les touches si la sélection est dans la plage de cellules souhaitée
        Application.OnKey "{DEL}", "DoNothing"
        Application.OnKey "{BACKSPACE}", "DoNothing"
    Else
        ' Rétablit le comportement par défaut des touches si la sélection n'est pas dans la plage de cellules souhaitée
        Application.OnKey "{DEL}"
        Application.OnKey "{BACKSPACE}"
    End If
End Sub
 
Dernière édition:

Franc58

XLDnaute Occasionnel
Dans le module de ta feuille tu mets ceci:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' Vérifie si la sélection est dans les colonnes A et B
    If Not Intersect(Target, Range("A:B")) Is Nothing Then
        ' Désactive les touches si la sélection est dans les colonnes A et B
        Application.OnKey "{DEL}", "DoNothing"
        Application.OnKey "{BACKSPACE}", "DoNothing"
    Else
        ' Rétablit le comportement par défaut des touches si la sélection n'est pas dans les colonnes A et B
        Application.OnKey "{DEL}"
        Application.OnKey "{BACKSPACE}"
    End If
End Sub

et dans un module standard:

Code:
Public Sub DoNothing()
    ' Ne fait rien
End Sub
 

maxd88

XLDnaute Nouveau
Voici ce que j'ai fait mais ca donne rien, quel est mon erreur stp?
1705933598499.png
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Voici ce que j'ai fait mais ca donne rien, quel est mon erreur stp?
Comme l'a dit Franc58, il faut mettre la première macro dans les macros de ta feuille, et non dans les macros de ThisWorkbook, ni dans un module standard. ;)


Les macros dont le nom commence par Worksheet_ se mettent dans la feuille concernée.
(worksheet = feuille)
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Je veux que dès qu'un salarié fait un choix dans un menu déroulant (colonne C), la date/heure s'inscrit et qu'on ne puisse plus la changer.
Du coup, iil faut peut-être aussi interdire le <Ctrl>+<Z> et l'utilisation de la flèche d'annulation.



Je viens de regarder ton fichier de #7, et je ne comprends pas pourquoi il n'y a pas de problème de référence circulaire en colonne A.
Si quelqu'un peut m'expliquer, je suis tout ouïe.



Tu utilises Excel 2016, donc si ton fichier n'est pas partagé par Excel, tu gagnerais peut-être à utiliser un Tableau Structuré. Ca t'éviterait d'avoir un immense tableau rempli de lignes vides. ;)
 
Dernière édition:

maxd88

XLDnaute Nouveau
Bonsoir, oui j'active le calcul itératif car le fait de rentrer un secteur en colonne C, entre la date/heure automatiquement, et sans cela ca ne marche pas, si il ya une autre méthode je prends

De même que si vous avez d'autres méthodes pour empecher la suppression des données je prends, la par exemple j'ai vu que EFFACER LES DONNEES (clic droit), fonctionne, auriez-vous une solution pour supprimer cela ?
Encore merci
 

Discussions similaires

Statistiques des forums

Discussions
312 866
Messages
2 093 032
Membres
105 615
dernier inscrit
fm74