Licence Economie et Gestion Outils Informatiques 2 Responsables : C. Hanen – R.

Licence Economie et Gestion Outils Informatiques 2 Responsables : C. Hanen – R. Chevallier Corrigés de quelques exercices Exercice 3 (TD 3) Soit m la moyenne des notes d’un étudiant donnée par l'utilisateur. Déterminer la décision du jury (ajourné, admis passable, admis AB, admis B, admis TB). Corrigé Sub Resultat() Dim note As Double note=InputBox("Entrez votre note") If note < 10 Then MsgBox("Ajourne(e)") If note>=10 And note<12 Then MsgBox("Admis Passable") If note>=12 And note<14 Then MsgBox("Admis AB") If note>=14 And note<16 Then MsgBox("Admis Bien") If note>=16 Then MsgBox("Admis TB") End Sub Exercice 7 (TD 3) Soit 2 nombres x et y donnés par l'utilisateur, puis une lettre donnée par l'utilisateur. Si la lettre tapée est « p », le résultat calculé par le programme vaut le produit x*y ; si la lettre tapée est « s », le résultat calculé vaut la somme x+y. Corrigé Sub Operation() Dim op As String, x As Integer, y As Integer x=InputBox("x=") y=InputBox("y=") op=InputBox("operation ? p=produit s=somme") If op="p" Then MsgBox("Le produit de " & x & " et " & y & " vaut " & x*y) End If If op="s" Then MsgBox("La somme de " & x & " et " & y & " vaut " & x+y) End If If op<>"s" And op<>"p" Then 'l'utilisateur a entré une lettre différente de "p" et "s" MsgBox("Erreur : opération inconnue !") End If End Sub Exercice 5 (TD 4) Faire la somme de 10 nombres aléatoires : chaque nombre est le résultat d’un tirage au hasard, et la somme des nombres est calculée au fur et à mesure. Calculer ensuite la moyenne de ces nombres. Corrigé Sub Exo5TD4() Dim somme As Double, x As Double, i As Integer Randomize somme=0 For i=1 To 10 x=Rnd() somme=somme+x Next MsgBox("Moyenne = " & somme/10) End Sub Exercice 6 (TD 4) Faire la somme de plusieurs nombres positifs en arrêtant ce calcul lors de la saisie de –1. Calculer ensuite la moyenne de ces nombres. Corrigé Sub Exo6TD4() Dim somme As Double, x As Double, n As Integer x=InputBox("Entrez un nombre réel") n=0 'la variable n sert à compter combien de ' nombres a entré l'utilisateur. somme=0 While x<>­1 somme=somme+x n=n+1 x=InputBox("Entrez un nombre réel") Wend MsgBox("Moyenne des " & n & " nombres = " & somme/n) End Sub Exercice 3 (TD 5) Modifier l'exercice précédent pour que maintenant le jeu s'arrête soit lorsque l'utilisateur répond "non" à une question posée soit lorsque le nombre de réalisations de ce jeu dépasse 10. Corrigé Sub Exo3TD5() Dim x As Integer, y As Integer, i As Integer, reponse As String Randomize i=0 reponse="oui" While reponse<>"non" i=i+1 x=Int(6*Rnd())+1 'tire au hasard un nombre entre 1 et 6 y=InputBox("D'après vous, quel est le résultat du lancer au hasard ?") If x=y Then MsgBox("Vous avez gagné !") Else MsgBox("Vous avez perdu !") End If If i<10 Then reponse=InputBox("Voulez­vous continuer ?") Else MsgBox("Fini, vous n'avez droit qu'à 10 tentatives !") reponse="non" End If Wend End Sub Exercice 5 (TD 5) On suppose un mot et une lettre saisis par l'utilisateur. Ecrire le programme qui vérifie si la lettre donnée est une lettre du mot. Le programme s'arrête dès qu'on a vérifié que la lettre est une lettre du mot. N.B Pour connaitre la longueur du mot on utilisera len("mot") et pour obtenir la ième lettre mid("mot",i,1) Corrigé Sub Exo5TD5() Dim mot As String, lettre As String, i As Integer mot=InputBox("Entrez un mot") lettre=InputBox("Entrez une lettre") i=1 While i<=len(mot) And mid(mot,i,1)<>lettre i=i+1 Wend 'à la fin de la boucle, la variable i contient la position de 'la première occurrence de la lettre si le mot contient la lettre 'et prend la valeur len(mot)+1 si la lettre n'appartient pas au mot If i<=len(mot) Then 'la i­eme lettre du mot est la lettre cherchee MsgBox("Le mot " & mot & " contient la lettre " & lettre) Else MsgBox("Le mot " & mot & " ne contient pas la lettre " & lettre) End If End Sub Exercice 1(TD 6) "Pile ou face". L' utilisateur entre son choix qui est comparé au choix fait au hasard par l'ordinateur. Si les deux valeurs sont égales l'utilisateur a gagné. Programmer dix réalisations de ce jeu et afficher le score (un jeu gagné donne un point). Corrigé Sub PileFace() Dim x As Integer, p As String, q As String Dim score As Integer, i As Integer Randomize 'Initialisation du générateur de nombres aléatoires score=0 For i=1 To 10 x=Int(2*Rnd())+1 'tire au hasard un nombre entre 1 et 2 If x=1 then p="pile" Else p="face" End If q=InputBox("Vous choisissez pile? Ou face?") If p=q Then 'L'utilisateur a deviné le résultat du lancer MsgBox("Vous avez gagné !") score=score+1 'On augmente le score de un Else'l'utilisateur n'a pas deviné le résultat du lancer MsgBox("Vous avez perdu !") End If Next MsgBox("Vous avez gagné " & score & " fois.") End Sub Exercice 4 (TD 6) Soit un mot donné par l'utilisateur, calculer le nombre de e de ce mot. Corrigé Sub Nombree() Dim mot As String, i As Integer, nb As Integer mot=InputBox("Entrez un mot") nb=0 'la variable nb sert à compter le nombre de e dans le mot For i=1 To len(mot) If mid(mot,i,1)="e" Then 'la i­ème lettre du mot est un "e" nb=nb+1 End If Next MsgBox("nombre de e dans le mot " & mot & " = " & nb) End Sub Exercice 2 (TD 7) Définir une fonction maximum(n1,n2,n3) qui retourne le maximum entre trois nombres. Utiliser ensuite cette fonction dans une macro avec des nombres donnés par l’utilisateur. Utiliser cette fonction dans la feuille Excel. Corrigé Function max3(x As Integer, y As Integer, z As Integer) As Integer If x >= z And x >= y Then max3 = x End If If y >= z And y >= x Then max3 = y End If If z >= y And z >= x Then max3 = z End If End Function Sub test1_max3() 'la fonction peut être utilisée directement dans la feuille excel Dim x As Integer, y As Integer, z As Integer x = InputBox("Donner le premier nombre") y = InputBox("Donner le deuxième nombre") z = InputBox("Donner le troisième nombre") MsgBox ("Le maximum est : " & max3(x, y, z)) End Sub Sub test2_max3() Dim x As Integer, y As Integer, z As Integer x = Range("A1").Value y = Range("A2").Value z = Range("A3").Value Range("A5") = max3(x, y, z) End Sub On peut aussi mettre =max3(A1;A2;A3) dans la cellule A5. La valeur de la cellule A5 sera automatiquement recalculée si on change une des trois cellules A1, A2 ou A3. Exercice 3 (TD 7) Ecrire une fonction Perimetre(Largeur, Longueur) qui calcule le périmètre d’un rectangle. Ecrire une macro qui demande à l’utilisateur d’entrer la largeur et la longueur d’un rectangle et affiche le périmètre. Ecrire dans une feuille excel un tableau : largeur longueur 3cm 10cm 5cm 8cm 63cm 20cm Utiliser la fonction Perimetre pour calculer dans la colonne suivante le périmètre des rectangles sur chaque ligne. Corrigé Function perimetre(x As Integer, y As Integer) As Integer perimetre = 2 * x + 2 * y End Function Sub test_perimetre() Dim x As Integer, y As Integer x = InputBox("donner la largeur du rectangle") y = InputBox("donnez la hauteur du ractangle") MsgBox ("le perimètre du rectangle est : " & perimetre(x, y)) End Sub Function perimetre2(cel1 As Object, cel2 As Object) As Integer 'Cel1 et Cel2 sont deux cellules contenant des entiers 'la fonction peut être utilisée diretement dans la feuille excel Dim x As Integer, y As Integer x = cel1.Value y = cel2.Value perimetre2 = 2 * x + 2 * y End Function Exercice 1 (TD 8) Soient 5 notes enregistrées au sein des cellules de la plage B1:B5. Définir la procédure qui calcule la moyenne des notes et la mention correspondante, et qui affecte les résultats aux cellules B6 et B7. Définir une procédure qui colore dans une couleur (par exemple rouge = 3) les notes inférieures à 10. Corrigé Function mention(note As Double) As String If note < 10 Then mention = "refusé" End If If note >= 10 And note < 12 Then mention = "passable" End If If note>=12 And note < 14 Then mention = "assez bien " End If If note >= 14 And note < 16 Then mention = " bien " End If If note >= 16 Then mention = "très bien " End If End Function Sub exo1() Dim maplage As Object Dim somme As Double, moyenne As Double, i As Integer Set maplage = Range("B1 : B5") somme = 0 For i = 1 To maplage.count somme = somme + maplage.Cells(i).Value Next moyenne = somme / maplage.count Range("B6").Value = moyenne Range("B7").Value = mention(moyenne) 'coloration en rouge des notes en dessous de 10 For i = 1 To 5 If maplage.Cells(i).Value < 10 Then maplage.Cells(i).Interior.ColorIndex = 3 End If Next End Sub Exercice 3 (TD 8) Soit une facture structurée par 5 lignes où figure sur chaque ligne, pour chacun des uploads/Industriel/ corrigetds-1150272892865.pdf

  • 44
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager