Kim a créé un formulaire dans Excel qui repose sur la validation des données pour présenter les réponses à l’aide de listes déroulantes. Il y a une série de questions dans le formulaire. Il se demande s’il existe un moyen de forcer la réponse aux questions. Il aimerait, par exemple, que l’utilisateur réponde à la question 1 avant de passer à la question 2, etc.

Accomplir ce genre de tâche peut crier pour l’utilisation d’une macro ou la création d’un formulaire utilisateur, mais vous n’avez pas besoin d’emprunter cette voie. (L’utilisation de macros et de formulaires utilisateur est très puissante, mais elle est également plus complexe que certaines personnes ne le souhaiteraient.) Vous pouvez obtenir un niveau de «régularité» en ajustant simplement les spécifications que vous utilisez dans vos listes déroulantes de validation des données.

À titre d’exemple, vous souhaiterez configurer quelques plages nommées dans votre classeur. Choisissez une cellule et nommez-la « Par défaut ». Dans cette cellule, mettez un message par défaut, tel que le texte «Répondez aux questions dans l’ordre». Dans une autre plage nommée (peut-être nommée « Q1Answers »), vous incluriez la liste des réponses acceptables pour votre première question. Enfin, vous devez attribuer un nom à la cellule qui contiendra la réponse de l’utilisateur à la question, par exemple «Q1Response». Vous pouvez créer des plages nommées similaires pour les autres réponses acceptables et les réponses à vos autres questions (Q2Answers, Q3Answers, Q2Response, etc.).

Ensuite, dans votre vérification de validation pour chacune de vos questions, vous pouvez utiliser une formule pour spécifier ce qu’Excel doit utiliser comme réponses possibles. Dans ce scénario, les paramètres de validation pour la question 1 sont faciles; définissez simplement le paramètre Autoriser sur Liste et spécifiez (dans la zone Source) que vous souhaitez utiliser la plage Q1Answers utilisée. Pour les questions suivantes, cependant, vous devez utiliser une formule dans la zone Source. Par exemple, pour la question 2, vous devez utiliser la formule suivante dans la zone Source:

=IF(OR(Q1Response="",Q1Response=Default),Default,Q2Answers)

Pour chaque question suivante, vous changeriez la désignation Q1 en ce qui est approprié pour la question précédente et la désignation Q2 en ce qui est approprié pour la question actuelle. La formule fonctionne car elle spécifie que si la réponse à la question 1 est vide ou qu’elle est égale à la valeur par défaut (« Répondre aux questions dans l’ordre »), alors la réponse par défaut est affichée comme choix pour la question 2. Si aucune de ces conditions existent, alors les réponses à la question 2 sont affichées et sélectionnables. Si les gens essaient de répondre aux questions alors qu’une question précédente n’a pas reçu de réponse, la seule option de liste déroulante visible sera la valeur par défaut (« Répondre aux questions dans l’ordre »).

Vous pouvez pousser cette approche un peu plus loin, si vous le souhaitez, en ajoutant une mise en forme conditionnelle au mix. Si vous utilisez le même type de test (pour voir si la question précédente a reçu une réponse), vous pouvez modifier le formatage des cellules contenant vos questions. Par exemple, si la question précédente n’a pas reçu de réponse, formatez simplement les questions suivantes afin qu’elles apparaissent en caractères blancs. Cela les fait disparaître dans le fond blanc de la cellule. Ensuite, au fur et à mesure que l’on répond à chaque question, la question suivante semble apparaître, dans l’ordre.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (8384) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Answering_Questions_in_Order [Répondre aux questions dans l’ordre].