© ideocene.com - utilisation interdite sans accord préalable
ideocene.com
informations pour la bureautique
Dernière mise à jour :
Vous êtes ici >  accueil   >  Excel®/vba >  VBA Excel® > Excel doc

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]