Vous êtes sur la page 1sur 34

Manipulation des Objets

Excel sous VBA

Dfinitions


Projet : chaque classeur Excel est associ un


projet VBA regroupant tous les modules de code
VB
Module : on a vu de quoi il sagit en VB, ils peuvent
tre exports en fichiers indpendants afin dtre
imports dans dautres classeurs.

La hirarchie des objets Excel




VB et VBA sont des langages de POO : on peut dfinir des modules


de classe.

Excel a t programm en POO : Excel est constitu dobjets.

Extrait :

Proprits des objets Excel






Les objets Excel sont dots dattributs (ou proprits).


On y fait rfrence par : Objet.proprit
Exemples :





CmdQuitter.Enabled=True Rend le bouton actif


boolEtat=CmdQuitter.Enabled rcupre ltat
Application.Cursor=xlWait sablier
Application.Cursor=xlDefault curseur
standard
MsgBox Application.Version affiche la
version de lapplication Excel active

Mthodes des objets Excel





sont les procdures et fonctions attaches aux objets.


On les appelles par :
objet.mthode argument1,argument2,

Exemples :



Range(A1:C12).Select slectionne la plage


Selection.Clear efface le contenue des cellules
slectionnes
ActiveWorkbook.SaveAs C:\devis\devis-3.xls
Enregistre le classeur actif dans un fichier.
ActiveCell.Name = Total nomme la cellule
active
Range(B2:B45).Name = Total nomme la plage

Gestion des vnements




Les objets Excel rpondent des vnements


dclenchs par lutilisateur :







Ouverture dun classeur


Ajout dune feuille
Slection de cellules
Clic sur un bouton de commande
Changement de cellule active
Entre dune donne,

On utilise les procdures vnementielles pour les


traiter (lorsque ncessaire).

Pour allger le code :


With <objet>
<code utilisant mthodes et proprits>
End With

Exemple :
With ActiveWorkbook
cre une feuille aprs la dernire feuille du classeur actif
.Worksheets.Add , .WorkSheets(Worksheets.Count)
modifie la nouvelle feuille et renseigne A1
With .ActiveSheet
.Name= synthse
.Range( A1 ) = Rcapitulation des devis
End With
End With

Linstruction If TypeOf :
If TypeOf <objet> Is <TypeObj> Then
<code utilisant <objet>>
End If

Exemple :
If TypeOf obj.Parent Is Worksheet Then

Linstruction Set :
Set <Objet> = [New]<expression objet>


Sert rfrencer des objets dj existants ou crer de nouveaux


objets (avec New)
Exemple :
Dim Classeur As Workbook
Dim i As Integer
cration dun nouveau classeur
Set Classeur = Application.Workbooks.Add
affectation des noms
With Classeur
.workSheets(1).Name= ventes 2000
.workSheets(2).Name= ventes 2001
End With

Les objets dExcel - Application





Lobjet application regroupe :


Proprits relatives lenvironnement Excel :
 Options du menu Outils, imprimante active,
 Prsentation de la fentre application : Height (double, hauteur de la
fentre), Left (double, espace entre le bord gauche de lcran et la fentre
Excel), Top (double),
 Proprits systme : MemoryFree (Long),





OperatingSystem (String)

Des proprits renvoyant les objets et collections de premier niveau du


modle objet
Des proprits spcifiques faisant directement rfrence des objets :

ActiveCell, ActiveSheet, ActiveWindow, ActiveWorkBook,


ThisWorkbook, Selection


Comme cest lobjet racine, cest lobjet par dfaut et on peut lomettre
dans les notations.

Les objets dExcel - Workbook




Les objets de la classe Workbook reprsentent des classeurs


Excel, ils sont membres de la collection Workbooks
Cet objet est renvoy par les proprits suivantes de lobjet
application :




Workbooks( nom ) ou Workbooks(index)


ActiveWorkbook
ThisWorkbook

Exemple :
MsgBox(ActiveWorkbook.Name)

Mthodes importantes


Activate : rend le Workbook actif

Add : ajout dun nouveau classeur

SaveAs chemin/nom : sauvegarde

Save, Close

: sauvegarde ou ferme le classeur actif


PrintOut : imprime le classeur spcifi
Workbooks(classeur1).PrinOut adresser un
objet dune collection.

Select

: slectionne le classeur indiqu

Exemple :
Sub fermeTousSaufMoi()
Dim classeur As Workbook
For Each classeur In Workbooks
IF classeur.Name<>ThisWorkbook.Name Then
classeur.Close True
End if
Next classeur
End Sub

Les objets dExcel - WorkSheet




Les objets de la classe Worksheet reprsentent des


feuilles de calcul, ils sont membres de la collection
Worksheets de lobjet Workbook
Proprits qui renvoient un objet WorkSheet :


WorkSheets( nom ) ou WorkSheets(index) ou


Sheets()
ActiveSheet : dsigne la feuille active du classeur adress

Proprits :


Name : nom de la feuille








ThisWorkbook.WorkSheets(1).Name= exemple

Visible : boolen qui indique si la feuille est visible ou non


Protect : boolen qui indique si la feuille rfre est protge ou non
Tab.Color : Couleur de longlet de la feuille

Exemple :
ActiveWorkbook.Worksheet( Tarifs ).Tab.Color = vbRed

Mthodes :






Activate : active la feuille dsigne (cela quivaut cliquer


sur longlet de la feuille)
Calculate : provoque le calcul des cellules de la feuille de
calcul spcifie
Delete : supprime la feuille de calcul dsigne
PrintOut : imprime la feuille dsigne
Protect et Unprotect : active et dsactive la protection de
la feuille

Les objets dExcel - objet Range




Lobjet Range reprsente lunion des cellules ou plages de cellules


indiques.
Syntaxe :
Range(cel1[,cel2,]) ou Range(plage1[,plage2,])
Inclue comme proprit de diffrentes classe :




Aplication.Range() :dsigne lobjet Range indiqu de la feuille active


Worksheet.Range() : dsigne lobjet Range indiqu de la feuille indique
Range.Range() : dsigne le Range indiqu du Range indiqu

Proprits des objets Range :




Count : nombre de cellule dsign par lobjet Range en question


MsgBox (Range("A1:N23").Count) affiche 322







Row : renvoie le numro de la premire ligne de la plage


RowHeight : hauteur des lignes de la plage
Column : renvoie le numro de la premire colonne de la plage
ColumnWidth : largeur des colonnes de la plage
Font.Bold : proprit boolenne indiquant si les fontes des cellules sont en
gras ou pas

Proprits des objets Range :




AddressLocal : rfrence de la plage dans le format utilisateur


MsgBox(Selection.AddressLocal) affiche $B$4:$B$9

Address : rfrence de la plage


MsgBox(Selection.Address) affiche $B$4:$B$9

Name : permet de nommer les cellules ou plage concernes


Columns(5).Name = total

Value : indique la valeur dune cellule (ne fonctionne que si le Range


en question ne dsigne quune cellule.
Range( B6 ).Value = 34000
Range( B6:B8 ).Value = 12 interdit : mauvaise pratique

Formula : indique la formule attache une cellule


ActiveCell.Formula= =Moyenne(B1:B8)

Mthodes des objets Range (renvoyant des objets):







Find (information) : renvoie un objet Range qui


reprsente la premire cellule o cette information
apparat
FindNext : cellule suivante
FindPrevious : cellule prcdente

Mthodes des objets Range (ne renvoyant pas dobjets) :





Activate : active la premire cellule du Range concern


AddComment : ajoute un commentaire aux plages correspondants
au Range dsign
ClearComments : efface les commentaires associs aux cellules
dsignes
Clear : efface tout le contenu des cellules
Exemple : Selection.Clear




ClearContents : efface le contenu des cellules


ClearFormats : efface le format des cellules

Mthodes (ne renvoyant pas dobjet) :







Copy, Cut, Paste : copie, coupe et colle les contenus des


cellules dsignes
Justify : aligne le contenu des cellules
Select : slectionne le Range considr
Exemple : Range( A1:N34 ).Select

Exemple :
Sub CreationTablo()
Dim i As Integer dclaration dun compteur
With Application.ActiveSheet
.Range("B1").Value = "Rsultats annuel"
indique les mois en colonne
For i = 1 To 12
.Range("A" & i + 3).Value = "mois " & i
Next I
assigne le total
.Range("A16").Value = "Total"
.Range("B16").Formula = "=SUM(B3:B15)"
End With
End Sub

Proprits renvoyant un objet Range :










Proprit Cells :
Application.Cells(nl,nc) : adresse une cellule de la feuille active.
Range(B1:G19).Cells(2,1) : adresse B2
Exemple :
Range(B1:G19).Cells(2,1) = fvrier
<Worksheet>.Cells : adresse une cellule de la feuille considre
Exemple:
Activesheet.Cells(3,2) = Mars modifie le contenu de la cellule B3

mthodes renvoyant un objet Range :





Application.Intersect : fait lintersection de Range


Application.Union : renvoie lunion des Ranges passs en
arguments
Exemple :
Dim Zonetout As Range
Set Zonetout = Union(Range(B2:B8),Range(B9:F12),Range(C4:C22)

Range.Areas(index) : permet de dsigner une zone dune union ou


intersection de plages
met en gras la plage B9:F12
Zonetot.Areas(2).Font.Bold = True

Autres proprits renvoyant des Ranges :




Columns et Rows :



syntaxe : Columns(index) ou columns(lettre)


Retourne lobjet Range correspondant la colonne/ligne
slectionne
Existe comme proprit de trois classes :
 Application.Columns()
 Range.Columns()
 Worksheet.Columns()
Pareil pour Rows : Application.Rows, Range.Rows,
Worksheet.Rows

Autres proprits renvoyant des Ranges :







Selection : dsigne lobjet Range correspondant la


slection courante
Exemple : Selection.InsertIndent
ActiveCell : dsigne lobjet Range correspondant la
cellule active de la fentre active ou spcifie

Les objets dExcel -WorkSheetFunction




Objet contenant toutes les fonctions pr-dfinies dExcel (toutes celles


charges louverture de lapplication)


Syntaxe :
Variable = WorksheetFunction.NomFonction(argument1,argument2,)
attention au type de Variable

Exemples :





Moy=Application.WorkSheetFunction.Average(Selection)
MsgBox(Application.WorksheetFunction.Log10(123))
Range(B1).value= Application.WorkSheetFunction.Average(Selection)
Range("C16").Value = Application.WorksheetFunction.Asin(0.987)
les noms franais ne marchent pas et le . est le sparateur de dcimale.

Range("C16").Value = Application.WorksheetFunction.Moyenne(Selection)

Fonctions utiles








SUM : calcule la somme des lments


AVERAGE : calcule la moyenne des lments
MDETERM : calcule le dterminant dune matrice
MIN : retourne le minimum des lments
MAX : retourne le maximum des lments
MEDIAN : retourne la mdiane des lments
STDEV : calcule lcart-type des lments (en supposant
chantillon)
STDEVP : calcule lcart-type des lments (en supposant
population)







CORREL : calcule le coefficient de corrlation entre deux


sries de donnes
SKEW : calcule le coefficient dasymtrie (skewness) des
lments
KURT : calcule le coefficient daplatissement (kurtosis) des
lments
Toutes les distributions (NORMDIST,
POISSON, TDIST, GAMMADIST, ...)
Fonctions financires
Fonctions logiques
etc.

Les collections


Lorsque plusieurs objets dune mme classe


cohabitent, on parle de collection.
Rfrence un objet dune collection:





NomCollection!NomObjet
NomCollection![NomObjet]
NomCollection( NomObjet )
NomCollection(var), o var est une expression de type
String correspondant au nom de lobjet
NomCollection(index) o index est le numro dindex de
lobjet dans la collection.

Exemples :





Workbooks![Devis.xls].Worksheets![Feuil1].Activate
Workbooks!(Devis.xls).Worksheets!Feuil1.Activate
Workbooks![Devis.xls].Worksheets!(Feuil1).Activate
Parcours dune collection :
Dim i as Integer
For i=1 To ActiveWorkBook.Worksheets.Count
ActiveWorkbook.worksheets(i).Name=DevisN & i
Next i

Ou encore
Dim Feuille As Worksheet
For Each Feuille In activeWorkbook.Worksheets
Feuille.Name=DevisN & Feuille.Index
Next Feuillle

Thats all folks

Exercice


Tlchargez le fichier Document_brut.xls ladresse


http://www.labri.fr/perso/zemmari/Ens/M2IRE
Ce fichier contient des informations sur les diffrentes commandes de
produits des diffrents clients.
Le but de lexercice est dclater la feuille contenant lensemble de
toutes les informations en :





Une feuille Clients : contenant les informations sur les clients


Une feuille Villes : contenant les codes postaux et les villes
Une feuille Commandes : avec les dtails des diffrentes commandes
Une feuille Produits : les informations sur les stocks des produits.

crire une procdure optimiser() permettant de raliser ce dcoupage.