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 ) parce qu'ils doivent pouvoir coller une bonne valeur si elle est dans la liste mais j'aimerais bien qu'excel renvoie un message d'erreur si elle n'y est pas.

Merci de votre aide

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 donc je suis preneur de ton bout de code meme si il m'aidera pas sur ce coup la.

Merci

ok je te l'envoi demain, il est sur mon ordi pro...

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

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 . C'est vraiment tres sympa.

merci aussi a tous ceux qui se sont penches sur mon problemes.

Vincent

Rechercher des sujets similaires à "restreindre valeurs possibles"