theme 3 : tests et structures de selection
Transcription
theme 3 : tests et structures de selection
Année universitaire 2015-2016 Informatique appliquée : Tableur et programmation Licence de sciences économiques et de gestion : 3e année Pierre-Henri GOUTTE THEME 3 : TESTS ET STRUCTURES DE SELECTION A 8 -2 30 9 10 11 B Note acceptée Note impossible Note impossible Condition complexe avec l’opérateur ET : Écriture L’objet de cette séance est de vous initier aux structures de choix, qu’elles soient proposées par Excel comme fonctions standards, ou qu’elles soient proposées par le langage Visual Basic Application. Télécharger « regle.xls » à l’adresse suivante : http://mediamining.univ-lyon2.fr/velcin A 5 8 6 -2 7 30 Résultat B =SI(ET(A5>=0;A5<=20);"Note acceptée"; "Note impossible") =SI(ET(A6>=0;A6<=20);"Note acceptée"; "Note impossible") =SI(ET(A7>=0;A7<=20);"Note acceptée"; "Note impossible") 5 6 7 A 8 -2 30 B Note acceptée Note impossible Note impossible C. Les structures alternatives en Visual Basic Application I. RAPPELS SUR LA STRUCTURE DE CONTROLE ALTERNATIVE 1. L’écriture de la fonction personnalisée Test dans un module A. Rappels d’algorithmique Dans un programme, une structure de contrôle alternative permet soit de lancer ou de ne pas lancer une action, soit de lancer une action ou d’en lancer une autre. Le choix entre agir ou ne pas agir Si Condition Alors Action Fin Si Le choix entre deux actions Si Condition Alors Action 1 Sinon Action 2 Fin Si Condition 1 Condition 2 Vrai Faux Vrai Vrai Vrai Et Faux Vrai Faux Condition 2 Vrai Faux Vrai Vrai Faux Faux Faux Faux Sur la première feuille de calcul du classeur, nous avons inséré quelques exemples de tests dont nous reportons ici l’écriture et le résultat. L’objet est de tester une série de notes entrées par un utilisateur. A 1 2 8 -2 Écriture B =SI(A1<0;"Note impossible"; "Note acceptée") =SI(A2<0;"Note impossible"; "Note acceptée") Condition complexe avec l’opérateur OU : Écriture A 9 8 10 -2 11 30 B =SI(OU (A9<0;A9>20);"Note impossible "; "Note acceptée ") =SI(OU (A10<0;A10>20);"Note impossible "; "Note acceptée ") =SI(OU (A11<0;A11>20);"Note impossible "; "Note acceptée ") Écriture A 1 2 3 8 -2 30 Résultat B =Test1(A1) =Test1(A2) =Test1(A3) 1 2 3 A B 8 Note acceptée -2 Note impossible 30 Note impossible Condition 1 B. Fonctions logiques du logiciel Excel Condition simple : Une fonction contenant une condition complexe construite avec l’opérateur OR Function Test2 (Note As Single) As String If (Note > 20) Or (Note < 0) Then Test2 = “Note impossible” Else Test2 = “Note acceptée” End If End Function 2. L’insertion de la fonction personnalisée Test dans la feuille de calcul Une condition simple est formée soit de deux variables liées par un opérateur de comparaison, soit d’une variable et d’une valeur liées par un opérateur de comparaison ( = , >, <, <>, =>, <=). Une condition complexe est formée de deux conditions simples liées par un opérateur logique (Et, Ou). Domaine de validité des opérateurs Et et Ou Ou Une fonction contenant une condition complexe construite avec l’opérateur AND Function Test1 (Note As Single) As String If (Note <= 20) And (Note >= 0) Then Test1 = “Note acceptée” Else Test1 = “Note impossible” End If End Function Résultat 2 3 A 8 -2 B Note acceptée Note impossible Résultat II. RAPPEL SUR LA STRUCTURE DE CHOIX MULTIPLE A. Rappels d’algorithmique La structure de contrôle de sélection permet en fonction d’une valeur d’exécuter une parmi plusieurs actions possibles. Si la valeur entrée par l’utilisateur ne correspond à aucun des choix proposés, c’est l’action proposée à la suite du mot clé Sinon qui est exécutée. Selon Nom_Variable Début Valeur 1 : action 1 Valeur 2 : action 2 ……………….. Valeur n : action n Sinon : action n+1 Fin Selon En algorithmique, Nom_Variable ne peut être que de type entier ou de type caractère Pierre-Henri GOUTTE © Les structures sélectives page 2 sur 8 B. La fonction Excel Choisir III. EXERCICES Excel propose, parmi les fonctions Recherche & matrices, une fonction qui permet de choisir une action parmi plusieurs actions : Dans « No_Index », il faut entrer l’adresse de la cellule qui permet à l’utilisateur de faire son choix. Dans « Valeur 1 », il faut entrer l’action à faire lorsque la cellule décrite en No_Index contient la valeur 1 ; dans « Valeur 2 », l’action à faire quand la cellule décrite en No_Index contient la valeur 2, etc. Une Faculté propose trois enseignements en première année de licence : économie, mathématiques et statistiques. Les coefficients appliqués à ses enseignements sont, respectivement, égaux à 8 (PondEco), 3 (PondMath) et 1 (PondStat). À partir de ces données et d’un échantillon de notes, la Faculté veut tester plusieurs règlements d’examen. A. Premier règlement : Emploi d’un test simple. Le premier règlement testé stipule que pour réussir l’étudiant doit obtenir une moyenne générale supérieure ou égale à 10. 1. L’emploi de la fonction logique Si d’Excel Cliquer sur l’onglet de la feuille de calcul « Règlement 1 ». Calculer en cellule F6 la moyenne pondérée du premier étudiant en employant d’une part les plages « Mathématiques », « Statistiques » et « Économie » et d’autre part les constantes que l’enseignant a déjà définies et nommées dans la feuille de calcul. =(Économie*PondEco + Mathématiques*PondMath + Statistiques*PondStat) / PondTotal C. La structure de choix multiple en Visual Basic La structure Select Case de Visual Basic Application permet de construire un test non seulement sur une valeur, mais aussi sur un ensemble de valeurs ou une inégalité : Function Mention(Note As Single) As String Dim Selecteur As Byte ‘ Le choix s’opère à partir d’une valeur entière Selecteur = Fix(Note) ' Fix permet de prendre la partie entière de la valeur de Note Select Case Selecteur Case 0 ‘ Égalité : Si la valeur de la variable Sélecteur est égale à zéro Mention = "Copie blanche" Case 1 To 9 ‘ Intervalle : Si la valeur est comprise entre 1 et 9 Mention = "Échec" Case 10 To 11 Mention = "Mention passable" Case 12 To 13 Mention = "Mention Assez Bien" Case 14 To 16 Mention = "Mention Bien" Case < = 20 ‘ Inégalité : Si la valeur est inférieure à 20 Mention = "Félicitations du jury" Case Else ' Autres cas : Si la valeur de Note n’est pas parmi celles testées Mention = "Une note doit être comprise entre 0 et 20" End Select End Function Recopier le calcul sur la plage F6:F12. Nommer cette plage « MoyenneGénérale ». Insérer une fonction logique Si en cellule G6. Elle affiche en fonction des valeurs de la plage nommée « MoyenneGénérale », le message « Admission » ou « Échec » selon la règle à tester : moyenne ≥ 10 =SI(MoyenneGénérale>=10 ; " Admission"; " Échec") Recopier la formule pour l’ensemble des données du test (plage G6 :G12). 2. L’emploi d’une fonction personnalisée construite avec la structure If… End if Dupliquer la feuille « Règlement 1 » à l’aide de la commande Déplacer ou copier une feuille… obtenue par un clic droit sur l’onglet de la feuille de calcul. Ne pas oublier de cocher la case « Créer une copie ». Nommer la nouvelle feuille de calcul « Règlement 1 VB ». Effacer le contenu de la plage G6 : G12 Créer un module à l'aide de la combinaison de touches ( Alt F11 ), et nommer le « Alternatives ». Dans ce module, construire une fonction Regle1 de type chaîne de caractères (String) et contenant un paramètre formel Moyenne_Obtenue de type réel (Single) : Revenir dans la feuille Excel et insérer la fonction « Regle1 » dans la cellule G6, en activant, dans l’onglet Formules le bouton Insérer une fonction, puis en choisissant la fonction parmi les fonctions Personnalisées. Mettre comme argument de la fonction la cellule F6. Pierre-Henri GOUTTE © Les structures sélectives page 3 sur 8 Pierre-Henri GOUTTE © Les structures sélectives page 4 sur 8 Insérer et coller la fonction Insérer la fonction Regle2 dans la cellule G6 et prendre comme valeur des paramètres les cellules F6 et E6. Recopier la fonction sur la plage G6 : G12. Troisième règlement : Emploi d’une condition complexe avec l’opérateur Ou. Le troisième règlement stipule que l’étudiant doit obtenir une moyenne générale supérieure ou égale à 10, une note en économie supérieure ou égale à 8, une note en matières quantitatives supérieure ou égale à 8. Le passage de paramètres 3. Emploi des fonctions logiques ET et OU d’Excel. Recopier la formule sur la plage G6: G12. B. Deuxième règlement : Emploi d’une condition complexe contenant l’opérateur Et Le deuxième règlement stipule que l’étudiant, pour réussir, doit obtenir une moyenne générale supérieure ou égale à 10 et une note en économie supérieure ou égale à 8. 1. Emploi de la fonction logique ET d’Excel Activer la feuille de calcul « Règlement 2 ». Insérer en cellule G6 une formule comprenant les deux fonctions logiques Si et Et pour éditer le message « Admission » ou « Échec » en fonction du règlement. = SI(ET(MoyenneGénérale>=10; Économie >=8); "Admission";"Échec") Activer la feuille de calcul « Règlement 3 ». Mettre un titre Quantitatives dans la cellule E5. Calculer avec les plages nommées dans cette colonne E la moyenne pondérée des mathématiques et statistiques. Nommer la plage E6 :E12 Quantitatives. En colonne H, insérer une formule comprenant les deux fonctions logiques Si et Et pour éditer le message « Admission » ou « Échec » en fonction du règlement. Attention ! La fonction Et doit donc avoir 3 arguments. En colonne I, insérer une autre formule comprenant les deux fonctions logiques Si et Ou pour éditer le même message. Vous constaterez que l’écriture de cette fonction est l’inverse de l’écriture de la colonne précédente. 4. Emploi de deux fonctions personnalisées avec les opérateurs AND et OR. Dupliquer la feuille de calcul et nommer la nouvelle : « Règlement 3 VB ». Effacer le contenu de la plage H6 : I12. Dans le module, créer deux fonctions personnalisées : - Fonction Regle3 à insérer en colonne H et qui est construite avec 3 paramètres : Moyenne, Économie, Quantitatives qui sont de type réel. La condition testée est faite de trois conditions simples liées avec l’opérateur AND : If (Moyenne_Obtenue >= 10) And (EcoPo >= 8) And (Quant >= 8) Then Il faut d’abord insérer la fonction logique Si, entrer les valeurs si vrai et si faux, positionner le curseur dans la fenêtre de « Test_logique » et activer l’insertion de la fonction logique Et en positionnant le curseur dans la zone de nom - Fonction Regle3bis à insérer en colonne I et qui est construite avec les trois mêmes paramètres, mais dont la condition testée est faite de trois conditions simples liées avec l’opérateur OR : If (Moyenne_Obtenue < 10) Or (EcoPo < 8) Or (Quant < 8) Then Regle3bis = " Échec" Else Regle3bis = " Admission" End If C. Quatrième règlement : Emploi de tests imbriqués Il est possible d’inclure dans une structure de contrôle alternative une autre structure de contrôle, alternative. Attention ! Vous devez fermer la structure incluse avant de fermer la structure englobante. 2. Construction d’une fonction personnalisée employant l’opérateur AND 1. Exercice sur le règlement de scolarité précédent Dupliquer la feuille de calcul « Règlement 2 » et nommer la nouvelle : « Règlement 2 VB ». Effacer le contenu de la plage G6 : G12. Dans le module « Alternatives », écrire une nouvelle fonction Regle2 comprenant deux arguments Moyenne_Obtenue et EcoPo tous les deux de type réel (Single). La condition à tester s’écrit : Activer la feuille de calcul « Règlement 3 ». En colonne J, insérer une formule ne comprenant que des fonctions logiques Si pour éditer le même message que les colonnes H et I. If (Moyenne_Obtenue >= 10) And (EcoPo >= 8) Then =SI(G6>=10;SI(F6>=8;SI(E6>=8;"Admission";"Échec");"Échec");"Échec") Pierre-Henri GOUTTE © Les structures sélectives page 5 sur 8 a) Imbrication de structures logiques Si Pierre-Henri GOUTTE © Les structures sélectives page 6 sur 8 b) Imbrication de structures alternatives dans une fonction personnalisée Créer dans le module une Fonction Regle3ter que vous insérerez en colonne J de la feuille de calcul « Règlement 3 VB ». Regle3ter = " Échec" If (Moyenne_Obtenue >= 10) Then If (EcoPo >= 8) Then If (Quant >= 8) Then Regle3ter = " Admission" End If End If End If Message = Regle2(Moyenne, Economie) Case 3 Message = Regle3(Moyenne, Economie, Quantitatives) Case 4 Message = Regle4(Moyenne, Economie, Quantitatives) Case Else ‘ Si la valeur n’est pas parmi celles testées Message = " Erreur de saisie" End Select Simulateur = Message End Function 2. L’emploi de la fonction Choisir 2. Exercice sur un nouveau règlement de scolarité a) Imbrications des fonctions logiques SI - Activer la feuille « Règlement 4 ». En cellule H6, insérer une formule qui édite un message en fonction des règles suivantes : « Admission » pour un étudiant qui a 10 de moyenne générale et 8 ou plus en matières quantitatives et en économie ; « Admission en économie » pour un étudiant qui n’est pas admis, mais qui a la moyenne en économie ; « Admission en matières quantitatives » pour un étudiant qui n’est pas admis, mais qui a la moyenne en matières quantitatives ; « Echec » pour les autres cas. b) Imbrications des tests dans une fonction Visual Basic Dupliquer la feuille « Règlement 4 » et la nommer « Règlement 4 VB ». Effacer les calculs de la colonne H. Créer dans le module « Alternatives » une fonction « Regle4 » permettant d’appliquer le dernier règlement. - Dupliquer la feuille précédente et nommer la « Choix Excel ». Effacer la plage H6 : H12. Pour obtenir le même résultat que dans la question précédente, - Insérer la fonction Choisir en H6. Elle est rangée dans la catégorie « Recherche et matrices ». - Comme N° Index, entrer la cellule D2. Pour permettre une recopie ultérieure, l’écrire en adressage absolu. - Entrer comme valeur 1, le premier règlement tel qu’il apparaît dans le classeur. Pour cela, activer l’onglet « Règlement » et sélectionner la cellule G6. Faire de même pour la valeur 2 de la fonction et le règlement 2 et ainsi de suite pour les quatre règlements. Vous devez obtenir le résultat suivant : =CHOISIR($D$2;'Règlement 1'!G6;'Règlement 2'!G6;'Règlement 3'!I6;'Règlement 4 VB'!H6) - Vérifier le bon fonctionnement de votre fonction avec des valeurs en D2 comprises entre 1 et 4. Entrer ensuite la valeur 8. La fonction renvoie le message # Valeur puisque le choix n’est possible qu’entre 4 règlements. Il faut donc empêcher en D2 l’entrée d’une valeur erronée. Sélectionner la cellule D2. Activer le bouton Validation de la zone Outils de données de l’onglet Données et paramétrer comme suit les onglets de la commande : D. La gestion de l’ensemble des règlements : Emploi de la structure de sélection L’écriture d’une structure de choix est plus simple en Visual Basic. Aussi commence-t-on exceptionnellement par cette méthode. 1. L’emploi de la structure de sélection dans une fonction Visual Basic Activer la feuille « Choix des règlements VB ». Dans cette feuille, l’utilisateur va taper en cellule D2 un nombre compris entre 1 et 4 et le règlement correspondant va s’afficher en colonne H. Nommer la cellule D2 Choix. Activer le module « Alternatives » et créer une nouvelle fonction Simulateur comprenant quatre paramètres : Sélecteur (de type entier : Byte) pour connaître le choix de l’utilisateur et Moyenne, Economie, Quantitatives (de type réel : Single) pour effectuer les tests du règlement. En fonction de la valeur de choix tapée, la fonction activera une des fonctions déjà construites lors des questions précédentes : Function Simulateur ( Sélecteur As Byte, Moyenne, Economie, Quantitatives As Single) As String Dim Message As String Select Case Selecteur ‘ Valeur entière correspondant au choix de l’utilisateur Case 1 Message = Regle1(Moyenne) ‘ Activation de la fonction correspondant au premier règlement Case 2 Pierre-Henri GOUTTE © Les structures sélectives page 7 sur 8 Pierre-Henri GOUTTE © Les structures sélectives page 8 sur 8