Programmation VBA pour Excel
Accueil
Sommaire du cours
Sommaire des exercices
Résumé du cours
Forum
Travaux
TICE
AgroParisTech
About
©AgroParisTech
Les tableaux
Exercices
Exercice 1
Ecrire la fonction verifierJours(Jour As String) qui permet de vérifier que la chaîne de caractères passée en argument est bien un jour de la semaine et qui renvoie un booléen, et la tester dans Excel.
Il faut écrire un tableau contenant tous les jours de la semaine et vérifier si le mot entré en argument fait partie de cette liste, avec une boucle.

Hide

Function verifie_jour(jour As String) As Boolean

Dim week As Variant

Dim i As Integer

verifie_jour = False

week = Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday")

Dim top As Integer

top = UBound(week) - 1

For i = 0 To top

If jour = week(i) Then

verifie_jour = True

End If

Next i

End Function

Hide

Exercice 2 (facultatif car difficile)
Etant donné une liste d'en-têtes pour les lignes et une liste d'en-têtes pour les colonnes, écrire un programme (des procédures et/ou des fonctions) permettant leur mise en page sur la première ligne et sur la première colonne.
exo2chap8
Il faut écrire deux procédures :
  • une avec les deux listes en arguments qui affecte les en-têtes aux cellules correspondantes ;
  • une autre qui renseigne les deux listes et qui appelle la procédure précédente.
  • Dans la première procédure, il faut deux boucles qui parcourent chacune des listes pour affecter chaque valeurs (chaque en-tête) à une cellules.
    Range demande en argument les coordonnées d'une cellule avec la notation d'Excel (lettre + chiffre). Vous ne pouvez donc pas l'utiliser pour parcourir les colonnes (A+1 n'ayant aucun sens). Vous pouvez alors utiliser Cells(x, y) : x étant l'index numérique de la ligne et y l'index numérique de la colonne.
    Cet exercice est long et difficile, ne baissez pas les bras !

    Hide

    Sub mise_en_page2(lignes As Variant, colonnes As Variant)

    Dim indexL As Integer

    Dim indexC As Integer

    indexL = UBound(lignes)

    indexC = UBound(colonnes)

    Dim i As Integer

    Dim j As Integer

    For i = 0 To indexL 'affectation des index des lignes

    Range("A" & (i + 2)).Value = lignes(i)

    Next i

    Range("A1").Select 'retour à la case départ

    For j = 0 To indexC 'affectation des index des colonnes

    Cells(1, (j+2)).Value = colonnes(j)

    Next j

    End Sub

    '=========='

    Sub ligne_colonnes()

    Dim week As Variant

    Dim weather As Variant

    week = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")

    weather = Array("soleil", "nuageux", "pluie", "orage")

    Call mise_en_page2(week, weather)

    End Sub

    Rappel : la fonction Ubound donne l'index du dernier élément d'un tableau.
    Dans la procédure mise_en_pages2, les boucles For... Next permettent de parcourir les tableaux lignes et colonnes et d'affecter les cellules correspondantes.
    Vous avez dû remarquer que les coordonnées des cellules sont à i+2 et j+2. Cela est dû au fait que l'index du premier élément d'un tableau est 0 et que l'on commence à affecter les valeurs à partir de la deuxième cellule de la ligne ou de la colonne (la cellule A1 restant vierge).

    Hide

    Félicitations, vous avez terminé les exercices de ce chapitre.
    Vous pouvez passer au chapitre suivant en cliquant sur ce lien ou sur la flèche droite en dessous. Vous pouvez également retourner sur le chapitre en cours en cliquant sur la flèche gauche.