XLS Forcer l'utilisation de menus déroulants

Fermé
Delph79 - 17 nov. 2009 à 13:38
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 - 18 nov. 2009 à 12:30
Bonjour,

J'ai un fichier excel pour mes commerciaux (reporting) qui est divisé en 2 parties
- de l.1 à l.17 : un titre avec quelques commentaires concernant l'utilisation du fichier
- de l.18 à l. 303: des cellules qui ont des menus déroulants (1 menu déroulant propore à chaque colonne)

Mon but est que les commerciaux ne puissent faire autrement que d'utiliser les menus déroulants. Je ne veux pas qu'ils puissent:
1. écrire du texte libre
2. pouvoir coller une autre cellule dessus (et écraser ainsi mes menus déroulants)

J'ai 2 soucis:
- Si je protège la feuille alors on ne peut plus utiliser les menus déroulants.
- Si je ne protège pas la feuille alors j'ai la possibilité de coller un cellule "libre" sur une de celles qui contiennent les menus déroulants et écraser ces derniers (c'est l'astuce que les commerciaux ont tendance à utiliser pour ne pas avoir à choisir dans la liste.... maleuheurement ça fausse toute ma matrice (qui est un autre fichier dans lequel je colle les données du fichiers de commerciaux pour obtenir mes taux etc...)

Je suis super désepérée.... Merci de votre aide
A voir également:

8 réponses

RA|STL|N Messages postés 450 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 24 mai 2016 79
17 nov. 2009 à 14:56
Bonjour Delph,

Utilise les menus déroulant en passant par le menu "donnée" et ensuite "validation" la tu choisi liste dans la section "autorisé" . Par la suite, tu n'a qu'àétablir la source des données que tu veux voir apparaitre dans ton menu déroulant.

Le plus beau dans tout ca c'est qu'il est absolument impossible d'écrire dans cette cellule ni d'y faire un copier/coller.

J'espère t'avoir aidé
0
Merci RA STL N,
Malheureusement c'est ce que j'ai fait (quand j'ai crée mes menus déroulants) mais ça n'empêche pas d'écraser mon menu déroulant si je colle une autre cellule dessus... je veux dire qu'effectivement quand je vais dans ma cellule je vois le menu déroualnt, mais si l'envie me prend, je peux quand même copier un cellule qui n'a pas de filtre (ou même une qui en a un autre) et la coller sur la cellule et écraser le menu déroulant. Tu vois ce que je veux dire?
En tout cas merci pour ton aide!
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
17 nov. 2009 à 16:44
Bonjour
eh oui ,c'est une des lacunes d'excel, difficile à contourner.Il est toujours possible de copier une cellule dans une cellule à données de validation, même s'il s'agit d'une valeur non autorisée et il ne semble pas, du moins à ma connaissance, y avoir d'option pour contourner ça
Je note toutefois après essai que, (encore plus bizzare), sur une feuille protége la cellule libre accepte bien une copie d'une valeur non référencée, mais que le menu déroulant n'en est pas modifié pour autant quand la feuille est protègée(donc pas écrasé).Il disparait par contre avec la même manip si la feuille n'est pas protègée?
Va savoir?...!
de plus sur une feuille protégée, on ne peut pas modifier les formats, mais on peut très bien copier un format différent sur une cellule déverrouillée!!!

Va savoir?...!

.... à part mettre votre cellule en couleur spécifique qui disparaitra lorssqu'une autre ,différente sera copiée dessus...!

Crdlmnt

0
RA|STL|N Messages postés 450 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 24 mai 2016 79
17 nov. 2009 à 17:21
Il ne te reste qu'à bloquer le copier/coller en VBA désolé de ne pas faire mieux...

Voici le code si ça t'intéresse :

Sub Workbook_DeActivate()

Dim oCtrl As Office.CommandBarControl
For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
oCtrl.Enabled = False
Next oCtrl

For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
oCtrl.Enabled = False
Next oCtrl

Application.CellDragAndDrop = False
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


Pour le remettre tu remets tout ça en true.

Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
18 nov. 2009 à 02:48
Pourquoi toutes ces complications ?

Une cellule contenant une liste déroulante de cellule, créée avec Validation de Données, reste parfaitement accessible après protection de la feuille, si on a pris le soin d'enlever le coche de "Verrouillée" dans la fenêtre Format de cellule/Protection.
De même, si certaines cellules ne contiennent pas de listes déroulantes mais doivent servir à saisir une quantité de marchandise ou la référence d'un client, utiliser Données/Validation des données/Autoriser/ et fixer des contraintes (nombre décimal compris entre 1 et 50, longueur du texte inférieure à 25, etc...) puis enlever "Verrouillée" pour ces cellules.
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
18 nov. 2009 à 03:22
Protection supplémentaire.

Je viens de découvrir ceci : Une fois la feuille protégée, même si on copie une autre cellule sur celle contenant la liste déroulante, cette dernière n'est pas modifiée ; seul le format de la cellule peut éventuellement être perturbé.
https://www.cjoint.com/?lsdwPQdxw1
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
18 nov. 2009 à 06:37
Salut mon ami Raymond; Belle découverte en effet :-),:-) :-)))


mais c'est un peu loin les antilles. de temps en temps... je te recopie ci dessous la deuxième partie de mon message 3 juste au dessus:

"Je note toutefois après essai que, (encore plus bizzare), sur une feuille protége la cellule libre accepte bien une copie d'une valeur non référencée, mais que le menu déroulant n'en est pas modifié pour autant quand la feuille est protègée(donc pas écrasé).Il disparait par contre avec la même manip si la feuille n'est pas protègée?
Va savoir?...!
de plus sur une feuille protégée, on ne peut pas modifier les formats, mais on peut très bien copier un format différent sur une cellule déverrouillée!!! "


Bien amoicalement
--
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
18 nov. 2009 à 12:30
En effet, cher Vaucluse !
Il m'arrive comme ça, de temps à autre, de défoncer des portes ouvertes ...
J'avoue que j'ai répondu à Delph79 sans trop m'apesantir sur les réponses déjà proposées, d'autant que l'une évoquait une macro, ce qui ne m'accroche absolument pas ...
Je n'avais donc pas intégré tes explications, et j'ai longuement cherché, essayé, testé des éléments de réponse ; et finalement ça m'a fait du bien de constater par moi-même ce que tu avais pourtant écrit un peu avant, car désormais je l'aurai en mémoire !
En te présentant mes excuses, je te souhaite une bonne journée.
0
Merci à tous pour vos réponses! :o)

RA|STL|N,
Merci pour ton code, malheureusement je ne maîtrise pas du tout VBA et avant de faire une bétise je préfère vérifier avec toi. voilà comment je pensais m'y prendre:
1. Sélectionner les colonnes et cellules qui ont un menu déroulant
2. Aller dans Outils > Macro > Visual Basic Editor
3. Je sélectionne la feuille qui me concerne (en haut à gauche)
4. Je clique droit > Code
5. Dans le 1er menu déroulant je sélectionne "Worksheet"
(et là j'ai ça qui s'affiche en dessous:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub)
6. Dans le 2ème je sélectionne "Deactivate"
(et là j'ai ça qui s'affiche en dessous:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub)
7. Je colle le code que tu m'as donné en dessous de tout ça.

Est-ce que c'est bon?
Et de là j'en sais rien... :s Est-ce que je dois sauvegarder? Comment le code devient-il actif dans mon fichier?

Encore merci pour ton aide et désolée pour les questions "bêtes" que je pose...
0