VISUAL BASIC & EXCEL

TP 9

Chasse au trésor


1. Solutions des exercices du TP 8

1.1. Polygones réguliers

Deux méthodes sont possibles :

Voici ces 2 méthodes :

'Dessiner un polygone régulier
'TP 8 ICES année 2002

Const pi = 3.141592656

Sub DessinerPolygone()
    ActiveSheet.Lines.Delete
    x = Cells(1, 2)     'abscisse du centre du polygone
    y = Cells(2, 2)     'ordonnée du centre du polygone
    r = Cells(3, 2)     'rayon du cercle circonscrit au polygone
    n = Cells(4, 2)     'nombre de côtés du polygone
    x1 = x + r          '(x1, y1) = point de départ du dessin
    y1 = y
    For k = 1 To n
        x2 = x + r * Cos(2 * k * pi / n)
        y2 = y + r * Sin(2 * k * pi / n)
        ActiveSheet.Lines.Add x1, y1, x2, y2
        x1 = x2
        y1 = y2
    Next
End Sub

Sub DessinerPolygoneBis()
    x = Cells(1, 2)     'abscisse du centre du polygone
    y = Cells(2, 2)     'ordonnée du centre du polygone
    r = Cells(3, 2)     'rayon du cercle circonscrit au polygone
    n = Cells(4, 2)     'nombre de côtés du polygone
    With ActiveSheet.Shapes.BuildFreeform(msoEditingCorner, x + r, y)
        For k = 1 To n
            x2 = x + r * Cos(2 * k * pi / n)
            y2 = y + r * Sin(2 * k * pi / n)
            .AddNodes msoSegmentLine, msoEditingAuto, x2, y2
        Next
        Set Polygone = .ConvertToShape
    End With
    Polygone.Line.ForeColor.SchemeColor = 4
    Polygone.Fill.Transparency = 0
    Polygone.Fill.ForeColor.SchemeColor = 5
    Polygone.Fill.OneColorGradient msoGradientHorizontal, 1, 1
End Sub

1.2. Triangle de Pascal

Pas de difficulté particulière. La solution avait été donnée en cours :

'Triangle de Pascal (15 premières lignes)
'Exercice du TP 8 - ICES année 2002

Sub Pascal()
    Cells(1, 1) = 1
    For L = 2 To 15
        For C = 1 To L
            If C = 1 Then
                Cells(L, C) = 1
            Else
                Cells(L, C) = Cells(L - 1, C - 1) + Cells(L - 1, C)
            End If
        Next C
    Next L
End Sub

1.3. Nombres parfaits

Certains n'ont peut-être pas pu faire cet exercice car l'organigramme n'était pas donné. Voici donc d'abord l'organigramme d'une fonction qui retourne la somme des diviseurs d'un entier n donné :

Voici maintenant l'organigramme de la procédure permettant d'afficher tous les nombres parfaits compris entre 1 et 10000 :

1.4. Anneaux olympiques

Il faut commencer par définir une procédure permettant de dessiner un anneau dont on connaît les coordonnées du centre (x , y), le rayon intérieur (r1), le rayon extérieur (r2)et la couleur (couleur). Plusieurs techniques permettent d'obtenir ce résultat, mais la méthode la plus simple est la suivante :


On pourra se reporter au TP3 pour savoir comment utiliser la méthode AddShape

Le programme principal est alors très simple (attention, les codes des couleurs ne sont peut être pas les mêmes sur I-Mac) :

Sub AnneauOlympique()
    ActiveSheet.DrawingObjects.Delete
    Anneau 100, 100, 38, 47, 4		'anneau de couleur bleue
    Anneau 200, 100, 38, 47, 5		'anneau de couleur jaune
    Anneau 300, 100, 38, 47, 0		'anneau de couleur noire
    Anneau 150, 150, 38, 47, 3		'anneau de couleur verte
    Anneau 250, 150, 38, 47, 2		'anneau de couleur rouge
End Sub

1.5. Tableau " pointes et fils "

L'organigramme était donné et le programme qui en découle est très simple :

Sub PointesEtFils()
    ActiveWindow.DisplayGridlines = False
    x1 = 50
    y1 = 50
    x2 = 300
    y2 = 250
    dx = (x2 - x1) / 50
    dy = (y2 - y1) / 50
    For k = 0 To 50
        ActiveSheet.Shapes.AddLine x1, y1 + k * dy, x1 + k * dx, y2
        ActiveSheet.Shapes.AddLine x1 + k * dx, y2, x2, y2 - k * dy
        ActiveSheet.Shapes.AddLine x2, y2 - k * dy, x2 - k * dx, y1
        ActiveSheet.Shapes.AddLine x2 - k * dx, y1, x1, y1 + k * dy
    Next
End Sub
2. La chasse aux trésors

2.1. Règle du jeu

L'objectif est de réaliser un jeu simple :

2.2. Préparation du jeu

Commencer par préparer la feuille de calcul de la façon suivante :

La grille de jeu est formée par les cellules A1 à J10.
Les colonnes K et L serviront à afficher les abscisses et ordonnées des cellules visées.
Les colonnes M, N, O et P afficheront, pour chacun des essais, le nombre de trésors situés respectivement au nord, au sud, à l'ouest et à l'est de la case visée.

2.3. Initialisation du jeu

Écrire une procédure qui :

Pour que les " trésors " ne soient pas visibles, on pourra considérer qu'il s'agit d'un caractère espace.

Dans un premier temps, on pourra mettre une étoile à la place de l'espace pour vérifier que la procédure se déroule bien.

Placer un bouton qui servira à lancer la procédure d'initialisation (écrire d'abord la procédure d'initialisation). Les boutons OK et Abandon seront placés plus tard.

2.4. Calcul des réponses

Pour choisir une cellule, l'utilisateur peut simplement cliquer sur elle. Il appuie ensuite sur le bouton OK, et la procédure associée à ce bouton OK affiche dans les colonnes K et L les coordonnées de la cellule choisie puis calcule les réponses et les affiche dans les colonnes M, N, O et P.
Voici comment peut se présenter le début d'une partie :

Le bouton OK sert à demander à l'ordinateur de calculer les réponses consernant les différentes cases visées. La procédure associée au bouton OK fera appel à 4 petites fonctions :

2.5. Procédure Abandon

La procédure Abandon sert à afficher les positions des trésors.

<< TP précédent      TP suivant >>

Retour à la liste des TP