VBA Programmation

Transcription

VBA Programmation
VBA
Programmation
This page was created using PDF Printer trial software.
To purchase, go to http://pdfprinter.pdftools.de/
SOMMAIRE
La programmation "Objet" ...................................................................................................... 3
A) Les objets VBA ............................................................................................................................. 3
B) La collection d'objets.................................................................................................................... 3
C) Aide de VBA et liste des objets Excel ......................................................................................... 3
D) Référence des objet....................................................................................................................... 3
E) Méthodes et objets ........................................................................................................................ 4
F) Propriétés et objets ....................................................................................................................... 4
Référence absolue et relative ............................................................................................................ 5
G) Application : Calcul de périmètre .............................................................................................. 5
Affectation de valeur dans une cellule ..................................................................................... 6
A) Exemple à faire ............................................................................................................................. 6
B) Ecriture du code ........................................................................................................................... 6
This page was created using PDF Printer trial software.
Université de Marne-la-Vallée
2002
To purchase, go toExcel
http://pdfprinter.pdftools.de/
Informatique / F. Petit
Programmation VBA
mai 2008
Page 2
La programmation "Objet"
A) Les objets VBA
VBA est un langage de programmation de type "orientés objets".
Il peut manipuler différents types d'objets hiérarchisés comme :
- une application comme Excel (Application)
- un classeur (WorkBook)
- une feuille de calcul (WorkSheet)
- une plage de cellules (Range) :
remarque : une cellule est un objet Range d'une seule cellule.
B) La collection d'objets
Un ensemble d'objets de même type est une collection d'objets comme une
collection de feuilles de classeur. L'objet Worksheets est une collection de
"Worsheet". La collection est matérialisé par la marque de pluriel (S final à son nom).
Un objet de la collection peut être désigné par son numéro dans la collection ou par
son nom.
Exemple : une feuille de calcul nommée "prix" est située en 2ème position dans un
classeur. On peut faire référence à elle en écrivant au choix :
- Worksheet("prix")
- Worksheet(2)
C) Aide de VBA et liste des objets Excel
Pour obtenir la liste des objets d'Excel :
 Appeler l'aide de VBA
 Sélectionner l'onglet Aide intuitive
 Taper "objets microsoft excel"
 Cliquer sur Rechercher
D) Référence des objet
Les objets peuvent être désignés par leur référence dans le système des objets.
Par exemple :
- Application.Worksbooks("monfichier.xls").Worksheets("prix").Range("A2:B6")
Souvent, la syntaxe pourra être simplifiée.
Par exemple si le classeur actif est monfichier.xls, on peut écrire :
- Worksheet("prix").Range("A2:B6")
Par exemple si la feuille active est prix, on peut écrire seulement :
- Range("A2:B6")
Une cellule peut être désignée par
- Range("B3")
- Cells(3,2) qui correspond à Cells(N° ligne, N°colonne)
Les objets actifs peuvent être désignés de la manière suivante (au singulier) :
- ActiveWorkbook
- ActiveWorkSheet
- ActiveCell
This page was created using PDF Printer trial software.
Université de Marne-la-Vallée
2002
To purchase, go toExcel
http://pdfprinter.pdftools.de/
Informatique / F. Petit
Programmation VBA
mai 2008
Page 3
E) Méthodes et objets
Une méthode est une action que l'on peut faire sur un objet.
La méthode Select peut s'appliquer à une plage de cellule, à une feuille de calcul…
Ecrivez et testez le programme suivant :
Sub ExempleSelection()
Worksheets(2).Activate
Range("B2:C5").Select
Range("B3").Activate
End Sub
La méthode Add peut s'appliquer à la collection d'objets Worksheets() pour ajouter
une feuille de calcul.
Sub ExempleAjoutFeuille()
Worksheets().Add
End Sub
F) Propriétés et objets
Les objets ont des caractéristiques que l'on appelle des propriétés.
On peut affecter une valeur à une propriété d'un objet.
Le fond d'un objet est définie par la propriété :
.interior
La fonte d'une cellule est définie par :
.font
Les couleurs se définissent par les propriétés au choix :
.colorIndex : qui peut prendre les valeurs 1, 2… de la palette de couleurs)
.color : peut prendre comme valeur une constante comme vbRed, vbGreen…
ou une valeur avec RGB(r,v,b) avec r, v et b entre 0 et 255
Sub ExemplePropriete()
Worksheets(2). Range("B2").value = 102
Worksheets(2). Range("B2").Font.Italic = true
Worksheets(2). Range("B2").Interior.color = Vbyellow
Worksheets(2). Range("B2").Font.color = RGB(255,0,0)
End Sub
On peut obtenir la valeur d'une propriété d'un objet, pour la stocker ou pour l'afficher
dans une variable.
Sub ExemplePropriete2()
vContenu = Worksheets(2).Range("B2").Value
vcouleur = Worksheets(2).Range("B2").Interior.ColorIndex
MsgBox "La couleur est " & vcouleur & Chr(10) & "La valeur est " & vContenu
End Sub
This page was created using PDF Printer trial software.
Université de Marne-la-Vallée
2002
To purchase, go toExcel
http://pdfprinter.pdftools.de/
Informatique / F. Petit
Programmation VBA
mai 2008
Page 4
Référence absolue et relative
Le programme suivant utilise des valeurs absolues pour désigner les cellules :
Sub ExempleSelectionRefAbsolue()
Range("A1").Value = "Pièce"
Range("B1").Value = "Longueur"
Range("C1").Value = "Largeur"
End Sub
Le programme suivant utilise des valeurs relatives pour désigner les cellules.
Il faut préalablement activer la cellule initiale…
Sub ExempleSelectionRefRelative()
ActiveCell.Value = "Cuisine"
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = "3"
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = "2.5"
End Sub
Offset(ligne, colonne) permet de spécifier une nouvelle position par rapport à la
cellule de référence (ici la cellule active ActiveCell). Une valeur positive déplace vers
le bas et vers la gauche, une valeur négative vers le haut ou vers la droite.
G) Application : Calcul de périmètre
Exemple : Les données sont saisies dans une boite de dialogue par l'utilisateur.
Les données et le périmètre calculé sont ensuite affichés dans une ligne
de la feuille de calcul réservée à cet effet (cellules A3 à D3)
A
1
2
3
4
5
Pièce
Cuisine
B
Longueur
5
C
Largeur
4
D
E
F
Périmètre
18
This page was created using PDF Printer trial software.
Université de Marne-la-Vallée
2002
To purchase, go toExcel
http://pdfprinter.pdftools.de/
Informatique / F. Petit
Programmation VBA
mai 2008
Page 5
Affectation de valeur dans une cellule
A) Exemple à faire
Exemple : la saisie des données est faite dans la feuille Excel, le résultat est
retournée par une procédure VBA SaisieDansFeuilleCalcul
B) Ecriture du code
Option Explicit
Sub SaisieDansFeuilleCalcul()
'Calcul le périmètre d'un rectangle
'Affectation du contenu d'une cellule à une variable
'Déclaration des variables
Dim vLongPiece As Single
Dim vLargPiece As Single
Dim vPeriPiece As Single
Dim vPiece As String
'Initialisation des variables
vLongPiece = 0
vLargPiece = 0
vPeriPiece = 0
vPiece = ""
'Affectation des données
Sheets("Affectation").Select
vPiece = Range("D6").Value
vLongPiece = Range("D8").Value
vLargPiece = Range("D10").Value
Sheets("") correspond à une feuille
de calcul ou à une feuille de
graphique
WorkSheets("") correspond à une
feuille de calcul (mais pas feuille de
graphique).
Affectation du contenu des cellules
aux variables correspondantes
'Traitement
vPeriPiece = (vLongPiece + vLargPiece) * 2
'Affichage du résultat
Range("D12").Value = vPeriPiece
End Sub
Affectation du contenu
d'une variable à une cellule
This page was created using PDF Printer trial software.
Université de Marne-la-Vallée
2002
To purchase, go toExcel
http://pdfprinter.pdftools.de/
Informatique / F. Petit
Programmation VBA
mai 2008
Page 6