Vous êtes sur la page 1sur 20

Le modle objet dExcel

6/28/12

DELTALOG 2011 Cliquez pour modifier le style des

sous-titres du masque

Lobjet Application

Cet objet reprsente l'application Excel. Il est l'objet parent de tous les autres, et contient des proprits, mthodes et vnements trs intressants, que nous allons regarder maintenant.

6/28/12

Evnements
Lobjet Application dispose de 31 vnements qui sont rarement utiliss, car inaccessibles. On prfre grer les vnements au niveau des autres objets Pour pouvoir les utiliser, nous devons ajouter la ligne de code suivante

Public WithEvents App As Application Classe


dans un module de
6/28/12

Proprits actives de lobjet Application


q

ActiveCell : cellule active ActiveChart: Graphique actif ActivePrinter: Imprimante par dfaut ActiveSheet: feuille active ActiveWorkbook: le classeur actif

Selection: la slection (peut ne pas Ces proprits sont accessibles directement (comme tre des cellules, utiliser typename) 6/28/12
q

les globales) mais il faut faire attention leur

Dsactiver les alertes dExcel


Lors de lexcution de macros, le programmeur peut dcider de dsactiver les alertes (il est cens savoir ce quil est entrain de faire). Exemple: suppression dune feuille de calcul, enregistrement dun classeur sous un nom qui existe dj. Application.DisplayAlerts = false

Dsactiver le rafraichissement de lcran


Pour amliorer les performances de la macro, il est prfrable de dsactiver le rafraichissement de lcran durant son excution Application.ScreenUpdating = false
6/28/12

La mthode Evaluate
Utilise pour valuer des formules 1. Sub IsActiveCellVide() Dim sFunctionName As String, sCellReference As String sNomFonction = ISBLANK sCellule= ActiveCell.Address MsgBox Evaluate(sNomFonction & ( & sCellule & )) End Sub 2. [A1].Value =11 3. Range(Evaluate("B2").Value)=14
6/28/12

La mthode InputBox
VBA comme on vient de lavoir possde une fonction InputBox (son inconvnient?) . La mthode InputBox de lobjet Application est une alternative. On spcifie le type.

6/28/12

La proprit StatusBar
Utilise pour afficher une information dans la barre dtat dExcel. Il convient de lutiliser pour informer lutilisateur de ltape de traitement. Surtout lorsque la macro est trs longue (un temps dexcution considrable!) Sub MontrerMessage() Dim Compteur As Long For Compteur = 0 To 100000000 If Compteur Mod 1000000 = 0 Then Application.StatusBar = Traitement du nombre & Compteur End If Next Application.StatusBar = False End Sub
6/28/12

La mthode OnTime()
Utilise pour programmer lexcution dune macro dans un temps futur Application.OnTime Date + TimeSerial(15, 0, 0), MontrerMessage Pour annuler une macro programme: Application.OnTime Date + TimeSerial(15, 0, 0), MontrerMessage, ,False

La mthode OnKey()

Lance une macro en rponse un appuie sur une touche clavier Atelier: Essayez de changer le fonctionnem { }ent 6/28/12 normal associ lappuie sur la touche bas du

La Collection WorkBooks
Cet objet reprsente tous les classeurs ouverts. Cette collection nous servira pour crer dautres classeurs sans devoir en instancier, Excel sen chargera.

Dim classeur as Workbook, wkb1 as Workbook Set classeur = Workbooks.add Set wkb1 = 6/28/12 Workbooks.Open(Filename:=C:\Data\SalesData1.xl

Lobjet Workbook
Cet objet reprsente un classeur Excel.
Les mthodes utilises sont: Open, Save, SaveAs: pour ouvrir, sauvegarder et faire une copie respectivement Close pour fermer le classeur. Dim classeur as Workbook, wkb1 as Workbook Set classeur = Workbooks.add ActiveCell.value =19 Classeur.close(SaveChanges:=True) Atelier: Crer un classeur et enregistrez-le dans le disque (C:) sous le nom essai.xlsx. Crez ensuite dans un autre classeur une macro qui lenregistre sous le mme nom. ? Consulter laide dExcel sur la proprit (saved) de lobjet 6/28/12 workbook.

La Collection WorkSheets
Toutes les feuilles de calcul dun classeur. Pour faire rfrence une feuille particulire, vous pouvez soit utiliser 1. lindex de la feuille (lindex de la premire feuille est 1) 2. Par son Nom NB. Il faut faire attention lors de lutilisation de la mthode de lindex: Worksheets renvoie lindex dans la collection Sheets. Dim feuille1 as Worksheet, feuille2 as Worksheet
6/28/12

Lobjet WorkSheet
Reprsente une feuille de calcul -----Copy and Move :Copier, dplacer et coller -----Comment slectioner plusieurs feuilles la fois?

6/28/12

Lobjet Range
Reprsente une plage de cellule, lobjet Range est de loin celui que vous allez utiliser le plus souvent. Nb: une plage peut ne pas tre contige (voir la proprit Areas)

Confusion entre Activate and Select, quelle est la diffrence?


6/28/12

Comment dsigner une plage


Range(B2) une seule cellule Range(A1:D10) plusieurs cellules Range(A1:A10,C1:C10,E1:E10) plage non contige Range(A1,D10) plusieurs cellules, plage contige Range(Ventes) plage qui correspond au nom Range(A1,Range(Cell)) plage de A1 la Ventes case dont 6/28/12

Suite.
Il faut prfrer de qualifier les plages en spcifiant les feuilles voire les classeurs
Worksheets(feuil1).Range(C10) Workbooks(Sales.xls).Worksheets(Sheet1).Ran ge(C10)

Atelier: Consolidez les donnes de deux classeurs, utiliser lobjet 6/28/12 WorksheetFunction

La proprit Cells
Range(B11).Cells(4,4)=? Range(D10:E11)(2)=? Range(D10:E11)(3)=? Range(D10:E11)(5) = ?

6/28/12

La proprit Offset
Cette proprit est similaire Cells Deux diffrences: . Range(Case).offset(0,0) = Range(Case).Cells(1,1) . Offset renvoie une plage de taille identique la plage de dpart, alors que Cells renvoie toujours une seule cellule.
6/28/12

La proprit SpecialCells
Rcupre les cellules qui ont des commentaires, qui contiennent des formules, des constantes, au choix!. Appuyer sur F5 pour voir les diffrents possibilits Chercher pour la mthode SpecialCells dans lexplorateurtoutes les cellules qui Atelier: Chercher dObjets.
contiennent des nombres et videz-les de leurs contenus!, ne supprimez6/28/12 les pas contenus date!

Les mthodes Union et Intersect de lobjet Application


Union(Range(B10:F20), Range(H10:L20)) Intersect(Range(A1:B2),Range( B1:D5))

6/28/12