web-dev-qa-db-fra.com

Restreindre la pâte dans les cellules déroulantes dans Excel

J'ai une feuille Excel qui contient de nombreuses colonnes déroulantes. Disons qu'une colonne a Test1, Test2 et Test3 comme valeurs d'options déroulantes. Les cellules de cette colonne ne doivent pas accepter les valeurs autres que celles-ci 3. Si je copie et colle "XYZ" dans ces cellules, il ne devrait pas être accepté. Quelqu'un peut-il m'aider à gérer cela?

6
Charan Raju C R

Configurer la validation des données

Vous voudrez utiliser la fonctionnalité de validation des données dans Excel pour limiter les cellules à un texte spécifique. Dans votre cas: "Test1", "Test2" et "Test3"

  1. Sélectionnez les cellules qui doivent accepter uniquement les valeurs "Test1", "Test2" et "Test3".
  2. Sous l'onglet Données , dans le groupe Outils de données , cliquez sur le bouton Bouton de validation des données .

    Data Validation Location in Office Ribbon

  3. Dans la liste déroulante Autoriser: , sélectionnez Liste .

  4. Dans le champ Source: , entrez Test1, Test2, Test3

    Data Validation Settings

  5. Cliquez sur OK pour appliquer les modifications.

À ce stade, une liste déroulante est associée à chaque cellule sélectionnée à l'étape 1. Les utilisateurs de la feuille de calcul ne pourront entrer que Test1 , Test2 , ou Test3 . S'ils essaient d'entrer autre chose, ils recevront le message d'erreur suivant:

enter image description here

Vous pouvez personnaliser le texte du message d'erreur, si vous le souhaitez, en cliquant sur l'onglet Alerte d'erreur à l'étape 4 ci-dessus.

Empêcher la copie/coller sur les données Cellules validées

Cela fonctionnera très bien, SAUF dans le cas où quelqu'un colle le contenu au-dessus des cellules. Le seul moyen d'éviter cela est d'écrire une macro qui détecte les mises à jour des cellules, détermine si la validation des données est activée sur les cellules, puis refuse le collage si vrai.

  1. Sélectionnez toutes les cellules disposant d'une validation de données et nommez-les DataValidationRange . Vous pouvez nommer des plages de cellules en tapant le nom à gauche de la barre de formule, où se trouve l'adresse de la cellule.
  2. Dans le module de code de la feuille de calcul (Sheet1, par exemple), ajoutez le code suivant:
 Private Sub Worksheet_Change (Cible ByVal en tant que plage) 
 'La plage de validation est-elle toujours validée? 
 If HasValidation (Range ("DataValidationRange")), puis 
 Quitte. Sub 
 Sinon 
 Application.Undo 
 MsgBox "Erreur: vous ne pouvez pas coller de données dans ces cellules." & _ 
 "Veuillez utiliser le menu déroulant pour saisir des données.", VbCritical 
 End If 
 End Sub 
 
 Fonction privée HasValidation ( r) As Boolean 
 'Retourne True si chaque cellule de la plage r utilise la validation des données 
 En cas de reprise d'erreur suivante 
 x = r.Validation.Type 
 Si Err. Nombre = 0 Alors HasValidation = True Sinon HasValidation = False 
 End Function 

Malheureusement, VBA est le seul moyen d'empêcher quelqu'un de coller sur les cellules. Cela pose un problème avec la validation des données dans Excel depuis le début. J'espère que ça aide de toute façon.

7
user387876

Une solution plus simple consisterait simplement à désactiver le collage dans le classeur. Je viens de trouver la solution pour cela ici: http://www.vbaexpress.com/kb/getarticle.php?kb_id=373

0
mjavon