Vous êtes sur la page 1sur 3

R1.

07
Tableau dynamique croisé
&
TP3
Initiation VBA

NOM : Prénom : Groupe :

Il y a deux objectifs à ce TP :

1. Premièrement l’utilisation du tableau dynamique croisé (TCD), plus efficace qu’un simple tableau pour
présenter et synthétiser les données.
2. Deuxièmement l’utilisation de la partie développeur (code) sous VBA pour Excel.

Exercice 1 : TCD
Un tableau croisé dynamique c'est un agrégateur. C'est-à-dire qu'il s'agit d'un outil qui va à la fois regrouper et
additionner des valeurs sans que vous ayez à réaliser la moindre formule. Contrairement aux idées reçues un
tableau croisé dynamique est un outil simple d'utilisation.
Mais il est vrai que la longueur de son nom peut faire penser que l'outil est complexe, pourtant il n'en n'est rien.

• Jamais dans un TCD vous ne devez avoir des données déjà agrégées (c.-à-d. faisant déjà l'objet
d'opérations de regroupement). Les données doivent être granulaires.
• Aucune ligne de vos données ne doit être vide.
• Tous les en-têtes de colonnes doivent être renseignés avec un nom unique.
• Chaque ligne du tableau représente une valeur unique (une vente, un salarié, un produit, ...)

1. Créer un tableau dont les entêtes sont : Nom, Téléphone, Email, Achat en cours, Depuis.
2. Remplir la colonne Nom par un nom au choix suivi d'un numéro, exemple : "Thomas1" (puis incrémenter
jusqu'à "Thomas25").
3. Remplir la colonne Téléphone (avec le bon format) par des numéros allant de "01 11 11 11 11"
à "01 11 11 11 35" (les espaces entre les nombres se mettent automatiquement).
3. Remplir la colonne Email par le nom du client correspondant et ajouter @mail.com (utiliser le symbole &
pour la concaténation).
4. Remplir la colonne Achat en cours par onze "Essence", dix "Diesel" et quatre "Electrique", puis la colonne
Depuis par des chiffres entre 1 et 7.
5. Rajouter une colonne voisine de Depuis, nommée A rappeler et la remplir en inscrivant des "oui" si l'achat
est en cours depuis plus de 4 jours. Pour une meilleure lisibilité, utiliser la mise sous forme conditionnelle.
6. Sélectionner tout le tableau, et insérer un Tableau dynamique croisé dans la même feuille à droite du
tableau existant.
7. Dans le tableau de commande qui apparaît, glisser "Achat en cours" dans Etiquettes de ligne et "A rappeler"
dans Valeurs puis Etiquettes de Ligne. Constater le résultat.
8. Constater ce que cela change si l'on échange dans Etiquettes de ligne l'ordre de "Achat en cours" et "A
rappeler" ?
9. Etablir différentes statistiques à l'aide du Tableau dynamique croisé, sous plusieurs formes (pourcentages,
moyennes, etc ...). Changer les étiquettes de ligne, les filtres, pour analyser les résultats. Le tout avec un
visuel agréable (en couleurs ...).
R1.07
Tableau dynamique croisé
&
TP3
Initiation VBA

Exercice 2 : VBA (bases)


Créer un classeur Excel vierge, et commencer par enregistrer le fichier (prenant en charge les macros) sous le nom
TP3-VBA_nom. Chaque exercice doit être résolu dans une feuille différente portant son nom.
Quelques étapes d'initiation :
1. Une fois le _chier Excel ouvert, appuyer sur "ALT"+"F11" (ou "Développeur" -> "Visualiser le code") pour
ouvrir la fenêtre de code VBA.
2. Une suite d'instructions est comprise dans une macro, que l'on place dans un module. Insérer un "module"
(on peut lui donner un nom quelconque).
3. Dans le module, écrire sub nom_macro()
(attention : pas d'accent, pas d'espace, pas de chiffre !) et le logiciel rajoute automatiquement End Sub.
C'est entre Sub et End Sub qu'il va falloir écrire les instructions de la macro "nom_macro".
4. Pour mettre des commentaires à l'intérieur du code (des lignes non lues par le programme), il faut précéder
la ligne par une apostrophe '.
5. Les cellules sont accessibles en VBA avec la syntaxe "Cells(Ligne,Colonne)" où Ligne est le numéro de la
ligne, et Colonne celui de la colonne.

Voici les syntaxes de VBA pour les différentes boucles vues en TD :

IF (CONDITION) THEN FOR i = 1 TO (ARRIVEE) WHILE (CONDITION)


Instruction Instruction Instruction
END IF NEXT i WEND

Pour déclarer une variable N dans une procédure, on écrit :


Dim N
Ou bien à l'extérieur de toute procédure et accessible par toutes :
Public N

1. Ecrire une macro qui renvoie le max de deux cellules.


Pour concaténer des mots et une valeur il faut utiliser le symbole &.
Insérer un bouton sur la feuille Excel pour lancer la macro.
2. Faire de même avec trois cellules.
3. Ecrire une macro qui renvoie dans une cellule la somme des 100 premiers entiers.
Ajouter un bouton sur la feuille Excel pour lancer la macro.
4. Ecrire une macro qui remplit un tableau à 26 lignes et 10 colonnes de la façon de l'exercice 3 du TD.
(T[i,j]<-i+j)
Ajouter un bouton sur la feuille Excel pour lancer la macro.
5. Dans Excel, faire une liste en ligne de 10 notes, et en-dessous écrire les coefficients de chaque note.
Ecrire une macro qui renvoie dans une cellule la moyenne (pondérée des coefficients).
Ajouter un bouton sur la feuille Excel pour lancer la macro.
6. Réaliser l’exercice 5 et l’exercice 6 du TD via VBA.
7. Ecrire une macro qui dans une liste de taille 10, échange la 3ième cellule avec la 8ième. Ajouter un bouton
sur la feuille Excel pour lancer la macro.
R1.07
Tableau dynamique croisé
&
TP3
Initiation VBA

Notre classeur Excel doit maintenant contenir 7 Feuilles : Exo1, Exo2 etc. Créer une macro Interaction() dans le
module VBA. Pour agir sur la feuille Exo1 seulement, il faut indiquer à VBA qu'on veut travailler sur cette feuille grâce
à la commande :
Worksheets("Exo1")

Pour changer la couleur de police d'une cellule, on peut utiliser la commande .Font.Color.
Par exemple :
Worksheets("Exo2").Cells(4,3).Font.Color = RGB(150, 150, 150)

Pour changer la couleur de toute une ligne on utilise la commande "Rows(i).Interior.Color".


Pour changer la couleur de toute une colonne on utilise la commande "Column(j).Interior.Color".

Ecrire une macro qui colorie une ligne sur 2 de la couleur RGB(150, 150, 150) dans la feuille Exo1, et une ligne sur 3
d'une autre couleur dans la feuille 2. Se limiter à 100 lignes. Rajouter un bouton sur une des feuilles pour appeler la
macro.

Aide VBA
Rnd Renvoie un nombre aléatoire entre [0; 1[
WorksheetFunction.Floor(x ; 1) Renvoie la partie entière de x
nb1 Mod nb2 Renvoie le modulo de nb1 par nb2
RGB(x, y, z) Donne une couleur Red/Green/Blue où x,y,z compris entre 0 et 255
MsgBox "message" Affiche "message" dans une fenêtre

Vous aimerez peut-être aussi