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?
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"
Sous l'onglet Données , dans le groupe Outils de données , cliquez sur le bouton Bouton de validation des données .
Dans la liste déroulante Autoriser: , sélectionnez Liste .
Dans le champ Source: , entrez Test1, Test2, Test3
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:
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.
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.
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.
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