Vous êtes sur la page 1sur 4

TP2 : VBA Excel Avanc

1. Manipulation de cellules Excel


Exercice 1. Macro inconnue
b a baa \ __ __

 aZ  aZ   aZ \ a __

__ __

 aZ  aZ

Que se passe-t-il votre avis si 1) vous excutez la macro en vous plaant dans la cellule B1 qui contient 0 2) vous excutez la macro en vous plaant dans la cellule A1 qui contient 1 3) vous excutez la macro en vous plaant dans la cellule A2 qui contient 5 Aprs avoir rpondu aux questions, recopiez la macro et testez.

Rponse : 1) Les cellules A1, B1 et A3 valent 0, la cellule A2 vaut 5, la cellule active devient C1. 2) La cellule A2 vaut 5, la cellule A3 vaut 2, les autres cellules sont vides, la cellule active reste A1 3) Les cellules A1 et A2 valent 5, la cellule A3 vaut 6 et la cellule active reste A2 . Conclusion : faire bien attention la premire instruction : Range( A1 ) = ActiveCell qui signifie que la cellule A1 pointe sur la cellule active, elle prend donc les mmes valeurs que la cellule active si cette dernire est modifie.

Exercice 2. Petites macros


1. Ecrivez une macro qui place la valeur 30 dans la cellule active 2. Ralisez une macro qui affiche dans une bote de dialogue le contenu de la cellule active. 3. Ralisez une macro qui multiplie par deux la valeur de la cellule active 4. Ralisez une macro qui crit bonjour dans les cellules A1, A2, B1 et B2 de la feuille active laide dune boucle for each. 5. Ralisez une macro qui place le contenu de la cellule A2 de la premire feuille du classeur actif dans la cellule A1 de la deuxime feuille du classeur actif. 6. Raliser une macro qui nettoie le contenu de la feuille active.(indice : Range possde une mthode Clear.)

Rponse :
\ __  _ Z b \ __  _ \ __  _ \  \` _  aZ  b [ _ a aZ  _  _ ba]b 
_  b ^ [ \_  aZ  Ou bien \_  aZ \ [ __ _

__  _

 _ b ^ [ \_  aZ  _  _ \_  aZ  _

Exercice 3. Mises en forme de cellules


__ _ qui formate la plage de cellules A1:J10 avec un alignement 1. Ecrire une macro b ` horizontal centr, un alignement vertical centr, le format gras et la taille 16 pour la police Arial.. Indice : vous pourrez vous dabord enregistrer une macro qui effectue ce traitement et vous inspirer du code gnr..

Rponse :
_\  b ` __ _ \` _ Z  aZ __ _  aZ  _ Z  aZ b [ __ _ a _ Z \ [ __ _ b \ ba _ _\Za` a _ a  \ _ _\Za` a _ a a \ [ \ [ __ _ ba
` \ _ b_  \  b_b a  a \ [
a 
2.

Dans cette procdure, vous utilisez une plage fixe, mais il serait intressant de pouvoir lappliquer la plage slectionne par lutilisateur. Indice : regarder lobjet appel Selection

Rponse : remplacer la ligne _ Z  aZ c  _ Z  _

\ba

Exercice 4. Recherche de cellules


Ecrire une macro qui prend en paramtre une chane de caractres , slectionne la premire cellule de la feuille active qui contient la chane et la met en gras et en bleu. Tester en entrant quelques mots dans la feuille active et en crivant une macro qui recherche un de ces mots. Rponse :
_\  [ [ `b  \aZ \` __ _  aZ b [ __ _ a \ [ __ __ _  _ `b [ a \ [ __ _  _ ba b_  ba b_b a  \  a \ [ a
__ _ a  _\   [ [ [ [ ` \a a 

2. Objets particulier de Application


Exercice 5.
a \ba contient les fonctions de feuille de calcul intgres dans Excel. Lobjet b ^ [ Attention ces fonctions sont en anglais. Il faut faire trs attention aux types des paramtres passs, en effet certaines fonctions acceptent indiffremment des plages ou des nombres alors que d'autres n'acceptent que des plages. Ecrire une macro `b aa qui calcule la moyenne de la plage de cellules  et de la valeur 100 et qui affecte cette valeur la cellule . Indice : regarder les fonctions disponibles dans lobjet WorksheetFunction.

b ^ [

a \ba

Rponse : Public Sub `b aae() Range("A6") = WorksheetFunction.Average(Range("A1:A5"), 100) End Sub

Exercice 6.

La collection \ _bZ de lobjet cc_\ \ba contient l'ensemble des boites de dialogues utilises par Excel. Ces boites agissent le plus souvent sur la slection en cours donc nous sommes dans un des rares cas o l'emploi de la mthode Select sera obligatoire.

b\ \ _bZ

Ecrire une macro _\Za ` a qui slectionne la plage B1:B5 et qui ouvre une boite de dialogue permettant de spcifier lalignement des cellules de la plage. Rponse : Public Sub alignement() Range("B1:B5").Select Application.Dialogs(xlDialogAlignment).Show End Sub