Restreindre les valeurs possibles d'une cellule
Bonjour a tous,
voici mon petit souci. mes utilisateurs mettent a jour une feuille excel.
Pour certains champs, j'ai cree une liste de valeur accessible via un menu deroulant. la feuille est protegee(betement avec l'option dans outils) afin qu'ils ne puissent pas bidouiller. Pour d'autre champs l'edition est libre. Si on essaie de rentrer directement une valeur dans la cellule, excel envoie un message d'erreur, et jusque ici tout va bien.
Seulement voila, quelques petits malins font des copier coller en prenant la valeur contenue dans un champ libre et en la collant dans un des champs qui ne devrait autoriser que les valeurs de la liste. il n'y a pas de message d'erreur qui s'affiche et la valeur collee se trouve donc dans une cellule qui ne devrait permettre que les valeurs de ma liste sans aucun souci.
Je ne veux pas empecher le copier coller(de toute facon je sais pas faire
Merci de votre aide
- Messages
- 1'036
- Excel
- 2003 FR / 2007 UK
- Inscrit
- 07/05/2007
- Emploi
- Consultant en finance
pour empêcher le copier coller, un code circule sur internet, si tu veux je te l'envoi demain matin mais de toute façon, a priori ça ne te servira pas puisque tu ne veux pas l'interdire...
Bah ca me fera pas de mal de progresser en excel
Merci
- Messages
- 1'036
- Excel
- 2003 FR / 2007 UK
- Inscrit
- 07/05/2007
- Emploi
- Consultant en finance
ok je te l'envoi demain, il est sur mon ordi pro...
- Messages
- 1'036
- Excel
- 2003 FR / 2007 UK
- Inscrit
- 07/05/2007
- Emploi
- Consultant en finance
Salut, voici le code à insérer dans un module:
Sub InterdireCopierCouper()
On Error Resume Next
With Application
'disables shortcut keys
.OnKey "^c", ""
.OnKey "^v", ""
.OnKey "^x", ""
'Disables Copy
.CommandBars("Edit").FindControl(ID:=19).Enabled = False
.CommandBars("Edit").FindControl(ID:=848).Enabled = False
.CommandBars("Cell").FindControl(ID:=19).Enabled = False
.CommandBars("Column").FindControl(ID:=19).Enabled = False
.CommandBars("Row").FindControl(ID:=19).Enabled = False
.CommandBars("Button").FindControl(ID:=19).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=19).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=19).Enabled = False
.CommandBars("Standard").FindControl(ID:=19).Enabled = False
.CommandBars("Button").FindControl(ID:=848).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=848).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=848).Enabled = False
.CommandBars("Standard").FindControl(ID:=848).Enabled = False
.CommandBars("Ply").FindControl(ID:=848).Enabled = False
'Disables Cut
.CommandBars("Edit").FindControl(ID:=21).Enabled = False
.CommandBars("Cell").FindControl(ID:=21).Enabled = False
.CommandBars("Column").FindControl(ID:=21).Enabled = False
.CommandBars("Row").FindControl(ID:=21).Enabled = False
.CommandBars("Button").FindControl(ID:=21).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=21).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled = False
.CommandBars("Standard").FindControl(ID:=21).Enabled = False
'Disable Paste
.CommandBars("Edit").FindControl(ID:=22).Enabled = False
.CommandBars("Cell").FindControl(ID:=22).Enabled = False
.CommandBars("Column").FindControl(ID:=22).Enabled = False
.CommandBars("Row").FindControl(ID:=22).Enabled = False
.CommandBars("Button").FindControl(ID:=22).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=22).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=22).Enabled = False
.CommandBars("Standard").FindControl(ID:=22).Enabled = False
'Disable PasteSpecial
.CommandBars("Edit").FindControl(ID:=755).Enabled = False
.CommandBars("Cell").FindControl(ID:=755).Enabled = False
.CommandBars("Column").FindControl(ID:=755).Enabled = False
.CommandBars("Row").FindControl(ID:=755).Enabled = False
.CommandBars("Button").FindControl(ID:=755).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=755).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=755).Enabled = False
.CommandBars("Standard").FindControl(ID:=755).Enabled = False
End With
End Sub
- Messages
- 1'036
- Excel
- 2003 FR / 2007 UK
- Inscrit
- 07/05/2007
- Emploi
- Consultant en finance
Et voici le code pour rétablir le copier coller
Sub RetablirCopierCouper()
On Error Resume Next
With Application
.OnKey "^c"
.OnKey "^v"
.OnKey "^x"
'Enables Copy
.CommandBars("Edit").FindControl(ID:=19).Enabled = True
.CommandBars("Edit").FindControl(ID:=848).Enabled = True
.CommandBars("Cell").FindControl(ID:=19).Enabled = True
.CommandBars("Column").FindControl(ID:=19).Enabled = True
.CommandBars("Row").FindControl(ID:=19).Enabled = True
.CommandBars("Button").FindControl(ID:=19).Enabled = True
.CommandBars("Formula Bar").FindControl(ID:=19).Enabled = True
.CommandBars("Worksheet Menu Bar").FindControl(ID:=19).Enabled = True
.CommandBars("Standard").FindControl(ID:=19).Enabled = True
.CommandBars("Button").FindControl(ID:=848).Enabled = True
.CommandBars("Formula Bar").FindControl(ID:=848).Enabled = True
.CommandBars("Worksheet Menu Bar").FindControl(ID:=848).Enabled = True
.CommandBars("Standard").FindControl(ID:=848).Enabled = True
.CommandBars("Ply").FindControl(ID:=848).Enabled = True
' Enables Cut
.CommandBars("Edit").FindControl(ID:=21).Enabled = True
.CommandBars("Cell").FindControl(ID:=21).Enabled = True
.CommandBars("Column").FindControl(ID:=21).Enabled = True
.CommandBars("Row").FindControl(ID:=21).Enabled = True
.CommandBars("Button").FindControl(ID:=21).Enabled = True
.CommandBars("Formula Bar").FindControl(ID:=21).Enabled = True
.CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled = True
.CommandBars("Standard").FindControl(ID:=21).Enabled = True
'Enables PasteSpecial
.CommandBars("Edit").FindControl(ID:=755).Enabled = True
.CommandBars("Cell").FindControl(ID:=755).Enabled = True
.CommandBars("Column").FindControl(ID:=755).Enabled = True
.CommandBars("Row").FindControl(ID:=755).Enabled = True
.CommandBars("Button").FindControl(ID:=755).Enabled = True
.CommandBars("Formula Bar").FindControl(ID:=755).Enabled = True
.CommandBars("Worksheet Menu Bar").FindControl(ID:=755).Enabled = True
.CommandBars("Standard").FindControl(ID:=755).Enabled = True
End With
End Sub
Merci pour ce code, je vais y jeter un oeil.
Est ce que quelqu'un a la solution a ma petite question?
merci.
Vous pouvez aussi utiliser le private sub pour bloquer des cellules.
CAD : dans le Vba choisir la feuille sur laquelle se trouve les cellules a remplir
et faire un code de blocage.
Private Sub worksheet_change(ByVal target As Range)
If Range("A1").Value <> "" And Range("A1").Value <> "1" Then
MsgBox ("c'est faux")
Range("A1").Value = ""
Else
'
End If
End Sub
En mettant bien sur les valeurs que vous voulez dedans.
A+
petidani
Merci pour cet autre petit bout de code sauf que j'ai pas trop du comprendre la maniere de l'utiliser et qu'il me renvoie des erreurs tout le temps
Juste une question au sujet du code qui empeche le copier coller,
est ce qu'il est possible de ne l'appliquer que sur certaines feuilles d'un meme classeur?
je l'ai teste et la macro s'appliquait sur tous mes documents excel ouverts
Merci.
ps pas de nouvelles sur ma premiere question? c'est dommage meme si j'apprends quelques trucs sur d'autres sujets
Bonjour,
Je vous joins le fichier avec un test en A1
Dans lequel on ne peut mettre que la valeur 1 (suite au code d'hier)
https://www.excel-pratique.com/~files/doc/TEST_EXCEL.xls
A+
petidani
ouaaaah,
effectivement j'avais rien compris, merci beaucoup pour ce code et pour le fichier exemple qui m'a permis de comprendre enfin
merci aussi a tous ceux qui se sont penches sur mon problemes.
Vincent