Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour maxd88, Franc58, TooFatBoy, mapomme & cousinhub

Pour interdire le couper :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^x"  ' Rétablir Ctrl + X
End Sub

Private Sub Workbook_Open()
 Application.OnKey "^x", ""  ' Interdire Ctrl + X
 End Sub

Après, l'on peut annuler le clic droit de la souris...
Bonne journée à toutes & à tous
Eric c
 

Eric C

XLDnaute Barbatruc
Re le fil,
Une solution complète qui interdit le Ctrl x, le grisé des options lors du clic droit de la souris ET l'impossibilité de se servir du "Couper" du ruban. Code de don_pets en 2014 :

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Application
.OnKey ("^{x}"), "" 'Combinaison de touches =CTRL+x
End With
End Sub

'Cela empêchera ton user de se servir de son clavier avec le ctl x


'sinon pour éviter l'usage de la souris :

Private Sub Workbook_Activate()
Dim oCtrl As Office.CommandBarControl

'Disable all Cut menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
oCtrl.Enabled = False
Next oCtrl

'Disable all Copy menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
oCtrl.Enabled = False
Next oCtrl

Application.CellDragAndDrop = False

End Sub

Private Sub Workbook_Deactivate()
Dim oCtrl As Office.CommandBarControl

'Enable all Cut menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
oCtrl.Enabled = True
Next oCtrl

'Enable all Copy menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
oCtrl.Enabled = True
Next oCtrl

Application.CellDragAndDrop = True

End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Application
.CellDragAndDrop = False
.CutCopyMode = False 'Clear clipboard
End With
End Sub
1er code à placer dans la feuille (ou le classeur) et le second dans le classeur

Eric c
 

Eric C

XLDnaute Barbatruc
Re le fil,

Essaie avec ce code :

VB:
Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
 ByVal Target As Excel.Range)

 Select Case Application.CutCopyMode
 Case Is = False
 'do nothing
 Case Is = xlCopy
 'do nothing
 Case Is = xlCut
 MsgBox "Attention : il ne faut pas utiliser l'option COUPER dans ce classeur. Vous pouvez utiliser COPIER, puis supprimer les données source.", vbExclamation
 Application.CutCopyMode = False 'clear clipboard and cancel cut
 End Select

 End Sub

 
Private Sub Workbook_Open()

     Application.CellDragAndDrop = False
    
    
End Sub

Private Sub Workbook_Activate()
 Application.CellDragAndDrop = False
 End Sub

 Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.CellDragAndDrop = True
 End Sub

 Private Sub Workbook_Deactivate()
 Application.CellDragAndDrop = True
 End Sub

Bon appétit
Eric c
 

maxd88

XLDnaute Nouveau
Bonjour, merci, dans le même registre, j'aimerai que en colonne L les npms de mes utilisateurs s'affichent automatiquement (chaque pc a bien le nom de l'utilisateur),
j'ai écris ce code :

Option Explicit

Function username()
username = Application.username
End Function


Seulement quand je l'appel avec =username() mon nom apparait sur toute la colonne !
J'aimerai que le nom apparraisse que quand quelqu'un démarre une saisie sur la ligne en question, et que cette colonne soit grisée (car calculée automatiquement).

J'ai tenté :
=SI(ESTVIDE(B184);"";username())

mais ca donne rien Avez-vous des pistes ?
Merci.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…