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