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