Vous êtes sur la page 1sur 30

Tableaux, chaînes

VBA et Excel

Par Fabrice Pasquier
Cours II

Rappels - Environnement

Ouverture de l’environnement de programmation:
– Outils -> Macro -> Visual Basic Editor
Création d’un module
– Insertion -> Module

Rappels – Boutons , …

Faire apparaître la barre d’outils des formulaires
– Affichage -> Barres d’outils -> Formulaires
Dessiner un bouton
L’associer à une macro (=programme)

Tableaux et vecteurs (1) But: stocker les données de manière structurée Exemple: on veut stocker les mois de l' année (Janvier. Mars. . Février. …) Exemple: On veut travailler sur le contenu des 10 premières valeurs d' une ligne de feuille Excel.

Tableaux et vecteurs (2) Deux déclarations possibles: 1. Dim tabl2 As Variant – Souvent lorsqu' on utilise la fonction Array – tabl2 = Array("Janvier". "Mars") . Dim tabl1(0 To 12) As Integer – On prévoit 13 emplacements pour des entiers – tabl1(0) = 14 – tabl1(2) = 17 2. "Février".

Tableaux et vecteurs (3) Structure pour afficher le contenu: ! "! Ou #$ % ! "! .

2) = 1200 Montant correspondant au 2 janvier . 1 To 31) As Integer – montant(1.Tableaux et vecteurs (4) Les tableaux peuvent avoir plusieurs dimensions: – Dim montant(1 To 12.

Tableaux et vecteurs (5) Fonctions sur les tableaux: – LBound: plus petit index du tableau – UBound: plus grand index – Array(…): retourne un tabeau (doit être affecté à un Variant) – Erase efface le tableau de la mémoire .

Tableaux et vecteurs Exemples des fonctions de tableaux & '( $ ) '( ! "! * '+ ' * . ' .

séparateur) – s = Split("c:\windows\system32\driver. "\") – s doit être de type Variant ! +*% .Fonctions sur les chaînes de caractères (1) Concaténation: & ("fabrice" & " pasquier") Construction périodique: String(20.dll". "x") – Répète 20 fois le caractère ' x' – Space(10): génère une séquence de 10 espaces Eclatement: Split(chaine.

2) retourne "ic" . min: LCase("BonjouR") retourne "bonjour" UCase("BonjouR") retourne "BONJOUR" Sélection de caractères: Mid.Fonctions sur les chaînes de caractères (2) Longueur: Len(chaîne) Positionnement: InStr(chaîne. Right Left("Fabrice". "b") retourne 9 MAJ. caractère) – pos = InStr("Il fait beau". 3) retourne "ice" Mid("Fabrice". Left. 5. 3) retourne "Fab" Right("Fabrice".

"yy/mmmm/dd") – La fonction Date retourne la date actuelle.13 Format("salut".13. "##' ###. Celle-ci doit être formatée avant affichage dans une boîte de dialogue. "<") UCase("salut") Format(Date.Formatage des chaînes La fonction Format(…) retourne une chaîne de caractères formatée en fonction des paramètres Même fonctionnement que dans Excel Format(12121.00") retourne 12' 121. sinon elle sera affichée sous la forme spécifée dans les options régionales (dd/mm/yy) .

3) = -18 Fix(18.12) retourne 13 Int(-14.Fonctions mathématiques Valeur absolue: Abs(-9) retourne 9 Signe: Sgn(-18) retourne –1 (ou 0 ou 1) Troncation: Int(13.8) retourne –15 – Tronque à l' entier inférieur le plus proche Partie entière: Fix(-18.3) = 18 – Enlève la partie décimale .

Fonctions mathématiques Sqr. Tan.413…. Atn (arc-tangente) .197224… (en base e) Nombres aléatoires – Rnd retourne un nombre aléatoire entre 0 (compris) et 1 (non compris) – a = Rnd a peut valeur 0.12131441 – Int((b – a + 1) * Rnd + a) retourne un nombre aléatoire entier entre a et b Sin. Log – Sqr(4) retourne 2. Exp. Exp(5) retourne 148. Log(9) retourne 2. Cos.

4.Fonctions de dates Date retourne la date actuelle Time retourne l'heure courante – Date et Time peuvent retourner des String DateSerial retourne une valeur unique pour une date donnée. sous forme Variant – dv1 = DateSerial(2003. 22) dv2 = DateSerial(1928. – Year(Date) retourne 2003 cette année (en entier) . 5. Month et Year retourne respectivement le jour. le mois et l' année d' une date. 3) dv1 – dv2 représente le nombre de jours entre ces deux dates Day.

Activités dans Excel But de la programmation dans Excel: interragir avec les feuilles de calculs Nécessite une brève introduction aux objets MS Office Structures de base toujours les mêmes .

Structure des objets Excel .

Cette collection est faite d' une multitude d' objets. Ces collections s' appellent Worksheets ou Sheets.Structure des classeurs Chaque objet appartient à une collection. Chacun des Workbook contient à son tour une collection de Worksheet (ou Sheet). La collection Worksheets (ensemble des classeurs) se composent d' un ensemble de Worksheet. .

. .Vision imagée de la hierarchie d'objets ! * .0 1 1 1 1 1 1 1 1 / 0 % / 0 % . . . ./ ...

Hiérarchie en Visual Basic (1) On écrit une hiérarchie en VB avec des . Des simplifications d'écrire sont possibles – Sheets(1). (point) On se réfère à la cellule A1 de la 1ère feuille de calculs: Excel.1) est équivalent . Pas de 0.Sheets(1).Cells(1. Workbooks(1) => on prend le 1er élément de la collection des Workbook.Workbooks(1).Cells(1.1) Noter que l'index 1 est le plus petit.

Hiérarchie en Visual Basic (2) Cells est également une collection. Cells(3. comme la couleur ou la police . Cependant. il est remplacé par Range Chaque Range a de nombreuses propriétés. Chaque élément de la collection est une cellule. indexée matriciellement. 4) est le cellule (Cell) "C4". l' objet Cell n'existe pas vraiment en Excel.

Range("A1").Value = "salut" – Excel.Workbooks(1).Workbooks(1).Value = "salut" – Range("A1").Range("A1").Sheets(1). mais évidemment mois précises… .Value = "salut" (il faut être sur que la 1ère feuille de calculs est sélectionnée dans Excel…) Les 2 dernières solutions sont des simplifications d' écriture.Cells(1. 1).Value = "salut" – Sheets(1).Sheets(1).Hiérarchie en Visual Basic (3) Ecrire dans la cellule A1: – Excel.

Une méthode est une action que l' on peut exécuter sur un objet .Hiérarchie en Visual Basic (4) Lorsque l'on tape Range("a1"). Visual Basic propose toute une liste de méthodes et de propriétés disponibles pour cet objet.

Range("A1").Range("A1").Size = 12 Nom: – Sheets(1).Applications .Bold = True Taille: – Sheets(1).Font.Police On peut changer la police ainsi: Graisse: – Sheets(1).Range("A1").Font.Font.Name = "Arial" .

Applications – Valeur Ecrire une valeur: – Sheets(1).Value = "=SUM(A1:B1)" Attention: il est nécessaire d' écrire la formule en anglais! .Range("A1").Value = 12 Ecrire une formule: – Sheets(1).Range("A1").

Applications – Couleurs (1) 2 syntaxes pour les couleurs: – Sheets(1). vbYellow.Interior. vbMagenta.Color = vbRed (vbBlack.Range("A1"). vbWhile ou valeurs en hexa) – Sheets(1). vbRed. vbGreen. vbCyan.Range("A1").ColorIndex .Interior. vbBlue.

Borders.Applications – Couleurs (2) Définition de la couleur du bord: – Sheets(1).ColorIndex = 13 .Range("A1").Borders.Range("A1").Color = vbRed Ou – Sheets(1).

Complément sur les couleurs Système de couleur RGB 3 valeurs codées de 0 à 255 (3 x 8bits = 24bits) (Rouge. Vert. Bleu) Blanc : R:255 G:255 B:255 Bleu: R:0 G:0 B:255 Convertir en hexadécimale – 255->FF 15->0F – Ecrire les 3 valeurs à côté: 0xFFED10 – Ecrire en décimale 0xFFED10 ->1677238 .

Application de la syntaxe de base dans Excel Voir exemple .

La suite ? Les formulaires Base de données ? Approfondir les notions acquises ? .