Dans cette page : programmation objet en vba / les variables en vba /les classeurs en vba / les feuilles en vba / le contenu des feuilles en vba / les événements en vba
la programmation objet en vba
Il est possible en vba de désigner des objets et d'utiliser leurs propriétés
(c'est-à-dire leurs caractéristiques) et leurs méthodes (c'est-à-dire les actions
possibles). Par exemple, chacun des éléments suivants constitue un objet :
- l'application Excel elle-même
- un classeur
- une feuille dans un classeur
- une cellule dans une feuille
- un graphique
Pour utiliser une propriété ou une méthode, elle doit être "attachée" à l'objet par un point.
Exemple de propriété : pour désigner le nom du classeur actif, on imagine utiliser
classeuractif.nom traduit en vba cela devient ActiveWorkbook.Name
Exemple de méthode : pour fermer le classeur actif, on imagine utiliser classeuractif.fermer
traduit en vba cela devient ActiveWorkbook.Close
Les propriétés et les méthodes sont très nombreuses dans Excel. Vous pouvez les examiner dans Visual Basic Editor
(sous Excel 2000 : menu Outils/Macros/Visual Basic Editor ou ALT+F11).
|
les variables en vba
Il est conseillé de déclarer les variables avant toute utilisation.
|
principaux types de variable
|
exemples de déclaration
|
|
type objet
|
dim monclasseur as object
|
|
type chaîne
|
dim texte as string
|
|
type nombre
|
dim num as byte [ou as integer ou as long etc... selon capacité]
|
|
type date
|
dim lejour as date
|
|
type variant = type indéterminé
|
admet n'importe quel type de donnée
|
| exemple d'affectation d'une valeur à la variable : texte="bonjour"
|
| exemple d'utilisation de la variable : ActiveSheet.Name=texte
|
les classeurs en vba
|
Workbooks
|
désigne la collection de classeurs ouverts
|
|
Workbooks.Count
|
fournit le nombre de classeurs ouverts
exemple d'affectation à une variable : mavariable=Workbooks.Count
|
Workbooks(n) Workbooks("nom")
|
désigne un classeur particulier par son numéro dans la collection ou par son nom
|
ActiveWorkbook ThisWorkbook ----------------------
|
désigne le classeur actif désigne le classeur contenant le programme en cours d'exécution
il faut bien faire cette distinction puisqu'il ne s'agit pas nécessairement du même classeur dans les 2 cas.
|
|
Workbooks.Open Filename:=
|
ouvre le classeur indiqué avec le chemin complet
exemple : Workbooks.Open Filename:="C:\Mes Documents\essai.xls"
ou avec une variable chaîne
Workbooks.Open Filename:= variablechemin+variablenom
ou Workbooks.Open Filename:= unevariable
|
les feuilles en vba
|
Worksheets
|
désigne la collection des feuilles du classeur
|
|
Charts
|
désigne la collection des graphiques du classeur
|
|
Sheets
|
désigne la collection des feuilles et graphiques du classeur
|
Worksheets.Count
|
fournit le nombre de feuilles
pour affecter ce nombre à une variable : mavariable=Worksheets.Count
|
Worksheets(n) Worksheets("nom")
|
désigne une feuille par son numéro dans la collection ou par son nom
|
|
ActiveSheet
|
désigne la feuille active
|
|
Index
|
correspond au numéro de la feuille dans la collection
|
|
Name
|
correspond au nom de la feuille (onglet)
|
|
|
pour désigner la feuille : Worksheets("nom") ou Worksheets(numéro)
pour nommer la feuille : Worksheets.Name="nomfeuille" ou Worksheets.Name=unevariable
|
le contenu des feuilles : cellules, lignes et colonnes en vba
principales désignations
|
ActiveCell
|
désigne la cellule active
|
|
Cells(l,c)
|
désigne une cellule unique par le n° de ligne et de colonne
exemple : Cells(5,2) désigne la cellule ligne 5 colonne 2 soit B5
|
|
Range(Cells(1,1))
|
désigne la cellule : ligne 1 colonne A ; aucun intérêt par rapport à la précédente
|
Range("A1:B5") Range(Cells(1,1),Cells(5,2))
|
désigne la plage de cellules : ligne 1 colonne A à ligne 5 colonne B
désigne la même plage de cellules
|
Range("A1,F3")
|
désigne 2 cellules ; attention à la syntaxe : ici c'est une virgule
|
|
propriété Value
|
désigne le contenu d'une cellule
exemple d'affectation à une variable : mavariable=Cells(5,2).Value
en fait, Value n'est pas indispensable ici.
affectation d'une variable à une cellule : Cells(5,2).Value=mavariable
même remarque
|
|
méthode Select
|
pour sélectionner une cellule : Cells(5,2).Select
|
propriétés
Names et Name
|
- pour affecter le nom "ventes" par exemple à une cellule : Range("A1").Name = "ventes"
- pour obtenir le nom donné à une cellule, il faut utiliser la collection Names du classeur :
exemple pour affecter le nom de la cellule A1 à une variable : mavariable=ActiveWorkbook.Names(Range("A1").Name.Index).Name
il est possible aussi d'utiliser directement l'index du nom ; pour le 1er de la liste, cela donne
mavariable= ActiveWorkbook.Names(1)
- la propriété Name utilisée seule renvoie l'adresse de la cellule : Range("A1").Name donne =Feuil1!$A$1 si Feuil1 est active
- il faut évidemment indiquer sur quelle feuille on veut travailler si elle n'est pas active
|
|
|
ASTUCE : le nom d'une cellule peut être utilisé à la place de ses coordonnées
c'est bien pratique notamment lorsque les coordonnées sont susceptibles de changer, par exemple à la suite d'une insertion de ligne
|
les événements en vba
|
événements concernant le classeur
les routines sont désignées par Workbook_nomdel'événement.
elles sont à placer dans le module ThisWorkbook : dans l'éditeur vba, double-cliquer sur le module ThisWorkbook puis, dans la fenêtre de droite, cliquer dans la liste de gauche sur Workbook et enfin sélectionner une routine dans la liste de droite
voici une liste en Excel 2000 (non nécessairement exhaustive) :
Workbook_Open()
Workbook_BeforeClose(cancel As Boolean)
Workbook_BeforePrint(cancel As Boolean)
Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Workbook_NewSheet(ByVal Sh As Object)
Workbook_SheetActivate(ByVal Sh As Object)
Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Workbook_SheetCalculate(ByVal Sh As Object)
Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Workbook_SheetDeactivate(ByVal Sh As Object)
Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Workbook_WindowActivate(ByVal Wn As Window)
Workbook_WindowDeactivate(ByVal Wn As Window)
Workbook_WindowResize(ByVal Wn As Window)
Workbook_Open()
l'événement Open a lieu à l'ouverture du classeur :
les lignes de code incluses dans la routine seront donc exécutées à l'ouverture du classeur ; l'utilisateur n'a pas à intervenir
une seule procédure Workbook_Open() est admise pour un même classeur.
Workbook_BeforeClose(cancel As Boolean)
l'événement BeforeClose a lieu avant la fermeture du classeur et permet, par exemple, de lancer une sauvegarde
l'argument cancel est False par défaut ; si la routine le met à True, l'événement n'aura pas lieu.
Workbook_BeforePrint ... et Workbook_BeforeSave ... sont de même type
ICI un classeur exemple avec macro Excel version 2000
|
|
événements concernant la feuille
les routines sont désignées par Worksheet_nomdel'événement.
elles sont à placer dans le module de la feuille correspondante : dans l'éditeur vba, double-cliquer sur le nom de la feuille puis, dans la fenêtre de droite, cliquer dans la liste de gauche sur Worksheet et enfin sélectionner une routine dans la liste de droite
voici une liste en Excel 2000 (non nécessairement exhaustive) :
Worksheet_Activate()
Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Worksheet_Calculate()
Worksheet_Change(ByVal Target As Range)
Worksheet_Deactivate()
Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Worksheet_SelectionChange(ByVal Target As Range)
Worksheet_Change(ByVal Target As Range) changement de valeur de la cellule
Target désigne la cellule où le changement a été effectué ; il est donc facile de tester l'adresse de cette cellule avec la propriété Target.Address exprimée en colonne et ligne sous la forme suivante : $A$1 (en majuscule(s) nécessairement)
Target.row retourne le n° de la cellule changée et Target.column le n° de colonne
ICI même classeur exemple que ci-dessus avec macro Excel version 2000
|
Les informations et les fichiers mis à votre disposition ont fait l'objet d'une attention préalable toute particulière. Toutefois, aucune garantie ne peut
être apportée et la responsabilité de l'auteur ne peut être engagée pour quelque motif que ce soit.
L'utilisateur voudra bien prendre toutes les précautions nécessaires à leur mise en oeuvre en fonction de ses besoins personnels et de son contexte propre.
Les fichiers sont utilisables pour un usage uniquement personnel avec indication de la source : www.ideocene.com© .
Les pages, textes, fichiers et images sont la propriété du site et ne peuvent donner lieu à aucune utilisation commerciale sans accord préalable.
Pour nous contacter / remplacez x[at]y par @ commercial x[at]y ideocene.com |
© Copyright 2006-2012 - ideocene.com | plan du site | [haut de page]
|