introduction aux macros et à visual basic pour applications − olivier

58
Master Génie Industriel – Tableur 1 Unité Tableur et Bases de données http://lagis-vi.univ-lille1.fr/~lo/ens/gi/#TBD Tableur – Programmer en VBA Olivier Losson Master Génie Industriel : http://master-gi.univ-lille1.fr Spécialités Production-Maintenance et Informatique Industrielle

Upload: others

Post on 13-Mar-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Master Génie Industriel – Tableur 1

Unité Tableur et Bases de donnéeshttp://lagis-vi.univ-lille1.fr/~lo/ens/gi/#TBD

Tableur – Programmer en VBAOlivier Losson

Master Génie Industriel : http://master-gi.univ-lille1.frSpécialités Production-Maintenance et Informatique Industrielle

Master Génie Industriel – Tableur 2

Plan du cours

IntroductionComparaison avec d'autres langagesNotations du cours et règles d'édition

1 – Types et variablesTypes disponibles et conversion entre typesDéclaration de variable, de constante

2 – Structures de contrôle (tests, boucles)

3 – Fonctions et procédures personnaliséesPrincipe, implémentation et appelParamètres

4 – Tableaux

Déclaration et utilisationTableaux dynamique

5 – Objets ExcelNotions d'objet, de propriété, méthode & collectionPrincipaux objets ExcelÉvénements et formulaires

Références

Master Génie Industriel – Tableur 3

Le langage VBARemplace les macros-commandes (depuis Excel 5.0)Permet

d'automatiser les tâches répétitivesde manipuler tous les objets Excelde communiquer avec d'autres applications, d'accéder aux fichiers, …de développer des interfaces graphiques (UserForms)mais PAS de développer des applications indépendantes d'Excel

Comparaison avec d'autres langages

SimilaritésStructures de contrôleFonctions intégrées ; fonction utilisateur et paramètres

SpécificitésPas de pointeurFaiblement typé ; existence d'un type générique (Variant)Interfaçage avec les « objets » Excel

Introduction

Master Génie Industriel – Tableur 4

Notations et conventions de ce coursCode source en police Courier

Rem. ne pas confondre l ( L min.) et 1 (un)Mots-clés du langage (à recopier tels quels) enCourier gras

Autres mots (à remplacer par une valeur) enCourier italiqueMots optionnels (=facultatifs) entre crochets[option]

Rem. suite de mots optionnels[option1 [,option2 [,option3 ... ]]]

Alternative entre plusieurs mots entre accolades{mot1|mot2|mot3}

Notations du cours

Master Génie Industriel – Tableur 5

Commenter son codeUtilité : lisibilité, réutilisabilité, maintenanceSyntaxe :

Rem Commentaire ou 'CommentaireCasse

Pas de différenciation majuscules/minusculesMise en forme et coloration automatiques :

rem commentaire    Rem commentaireConseil : tout écrire en minuscules

Instructions

Plusieurs sur une même ligne : séparateur « : »

Remarques préliminaires

Master Génie Industriel – Tableur 6

Types principauxEntiers : nb_personnes=3 : dist_terre_sol=147100000

Réels : temp_zero_k=-273.15 : masse_terre=6E+24

Opérateurs (priorité décroissante)

Opérateur Signification Exemple

^ puissance 5 ^ 2 = 25

- négation -5 + 2 = -3

* / multiplication, division 5 / 2 = 2.5

\ division entière (quotient) 5 \ 2 = 2

Mod division modulo (reste) 5 Mod 2 = 1

+ - addition, soustraction 5 – 2 = 3

& concaténation 5 & 2 = 52

Nombres (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 7

Fonctions intégrées principales

Fonction Signification Exemplevaleur absolue

arc-tangente (rad)

cosinus, sinus (rad)

Exp(1)=2.7182818

partie entière

racine carré

Tan tangente Tan(3.14159265)=1

Abs Abs(-5.2)=5.2Atn Atn(1)=0.785398

Cos, Sin Cos(3.14159265)=-1Exp, Log exponentielle, log népérien

Fix, IntFix(8.4)=Int(8.4)=8

Fix(-8.4)=-8Int(-8.4)=-9

Rnd nombre aléatoire  [0,1[ Rnd*2 1.411095Sgn signe  {-1,0,1} Sgn(-8.4)=-1Sqr Sqr(2)=1.414213

Nombres (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 8

Description Ensemble de caractères (de 0 à 65 400)Chaîne constante

Entourée de guillemets doubles ("...")Ne pas confondre avec une variable chaîne :

"message"  message (variable chaîne, ex. "bla bla")

Remarque : peut inclureLettres et chiffres  ("Lettres", "007")Espaces et caractères de ponctuation (" , ")Guillemets doubles : "Il dit ""Bonjour"" "Caractères spéciaux non imprimables

Fin de ligne : vbCrLf  Retour arrière : vbBackTabulation : vbTab

Chaînes (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 9

AffichageDans une boîte de message

MsgBox ("Bonjour")Dans la fenêtre Exécution

Debug.Print "Bonjour"

Rem. Debug omissible dans fenêtre d'exécutionSaisie

Dans une boîte de saisieréponse = InputBox ("Écrivez-moi un mot")

Concaténation

Mise bout à bout de 2 chaînes (constantes ou variables)Opérateur  &

nom = "Toto"print "Bonjour " & nom

Mise en cascade possible :print "Bonjour " & nom & ", comment vas-tu ?"

Chaînes (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 10

Fonctions intégrées principales

partie gauche

partie droite

sous-partie quelconque

recherche de sous-chaîne

code ASCII d'un caractère

caractère associé à un code

conversion en minuscules

conversion en majuscules

suppression des espaces

Len longeur (nb. caractères) Len("tête")=4Left Left("tête",3)="têt"Right Right("tête",2)="te"Mid Mid("tête",2,1)="ê"

InstrInstr("tête","e")=4Instr("tête","T")=0

Asc Asc("A")=65Chr Chr(65)="A"LCase LCase("TêTe")="tête"UCase UCase("TêTe")="TÊTE"

[L|R]Trim LTrim(" a ")="a "

Chaînes (3)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 11

DescriptionVariable à 2 valeurs possibles

True (Vrai)False (Faux)

Opérateurs (priorité décroissante)

Exercice : si A=True et B=False, que valent

Opérateur Signification Exemple

Or

Not non logique Not True = Faux

And et logique True And False = Faux

ou logique True Or False = Vrai

Xor ou exclusif True Xor True = Faux

A . BA. B

A.BA B

Booléens

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 12

Date/heure constanteEntourée de dièses (#...#)

Attention au format (France : #JJ/MM/AAAA [HH:MM:SS]#)Opérations

Addition/soustractiondate_naiss = #31/03/1990#

print date_naiss-1 30/03/1990

print date_naiss+1 01/04/1990 Conversion en nombre : nombre de jours écoulés depuis le 30 décembre 1899print date_naiss*2 65926

Fonctions intégrées principales

Date et heure

Fonction Signification Exemple RésultatDate date système courante Date 07/07/2015

DateDiff 364DateAdd ajout d'un intervalle DateAdd("m",1,#31/1/90#) 28/02/90

DatePart

Format Formatage de date Format(#2/2/90#,"d mmmm yy") "2 février 90"

nombre d'intervallesde temps entre 2 dates

DateDiff("d",#1/1/90#,#31/12/90#)

caractéristique d'une date

DatePart("y",#2/2/90#)DatePart("ww",#2/2/90#)

335

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 13

Type Suf. Description Valeurs possibles TailleBoolean booléen True/False 2 octets

Byte octet 0..255 1 octet

Integer % entier -32768..32767 2 octets

Long & entier long -2E9..+2E9 4 octets

Single !  réel simple ±3.4E38..±1.4E-45 4 octets

Double # réel double ±1.8E308..±4.9E-324 8 octets

Date date/heure 8 octets

String $ chaîne 0..65400 caractères Len(ch)

Object objet Excel 4 octets

Variant tout type toutes valeurs 16 octets

1/1/0100..31/12/999900:00:00..23:59:59

Workbook, Range, 

Récapitulatif des types

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 14

Automatique Ex.

print nb & "*" & mult & "=" nb*multprint "Aujourd'hui, nous sommes le " & Date()

Fonctions spécialisées

Utilité : réduire la taille mémoireConversions

En booléen : CBool  -  Ex. CBool(10)TrueEn entiers : CByte, CInt, CLngEx. CInt(10.5)10 : CInt(True)-1En date : CDate (partie entièredate, partie décimaleheure)Ex. CDate(32963.25)31/03/1990 06:00:00En réels : CSng, CDblEn chaîne : CStr

Conversion entre types

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 15

Initialisation

Informations sur le typeConnaître le type : fonction VarType()

temp = 38.2:Debug.Print VarType(temp)Tester le type

Fonctions IsType (Ex. IsDate(), IsNumeric(), ...) 

Types Exemple InitialisationBooléen

Numérique 0

Date Date 00:00:00

Chaîne String ""

Variant Variant

Objet

Boolean False

Byte, Long, Double,

Empty

Workbook, Range, Nothing

Détermination du type

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 16

ImpliciteMot inconnu nouvelle variable (type donné par la valeur)

Ex. temp=38.2 variable type DoubleExplicite 

Option Explicit dans section (Déclarations)

Avec Dim et AsDim nomVar As type Dim ch As String

Avec Dim et suffixe accoléDim nomVarSuffixe Dim ch$

En cascadeDim nomVar1 As type1, nomVar2 As type2,…

Rem.: que déclare   Dim v1, v2 As Double ?

Déclaration de variable

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 17

DescriptionAssociation Nom Valeur

Ex. vbKeyA  65 vbDouble  5

vbCrLf  Chr(13)&Chr(10) vbGreen  65280

Déclaration de constante personnaliséeConst nomConst [As type] = valeur

Ex. Const cZeroK As Single = -273.15Utilisation : comme les variables

Dans une expression Debug.print "Zéro kelvin=" & cZeroK & "°C"Comme paramètre d'une fonction réponse=MsgBox("Êtes-vous sûr ?", vbYesNo) If (réponse=vbYes) Then ...

Constantes

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 18

DescriptionExécution d'instructions sous condition

Syntaxes

Forme la plus simpleIf condition Then instructionLe tout sur 1 seule lignePlusieurs instructions possiblesen les séparant par ":"

Forme avec plusieurs instructionsIf condition Then

instructionsEndIfinstructions suivantes

conditionvraie ?

instruction(s)

instructionssuivantes

oui

non

Tests (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 19

Syntaxes (suite)Forme avec alternative

If condition Then

instructions1Else

instructions2EndIfinstructions suivantes

RemarquesLes tests peuvent être imbriquésOu utiliser 

If Then ElseIf Then Test « Selon »

conditionvraie ?

instructions2

instructionssuivantes

oui non

instructions1

Tests (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 20

Sélection (ou « Test Selon »)Description : exécution d'instructions sous condition avec plusieurs valeurs possiblesSyntaxeSelect Case expression

Case valeurs1

instructions1Case valeurs2

instructions2...[Case Else

instructionsN]

End Selectinstructions suivantes

instructionsN

instructionssuivantes

valeurs1 autres cas

instructions1 instructions2 ...

valeurs2

expressiontestée

...

Tests (3)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 21

DescriptionExécution répétitive d'instructions

Types de boucles

« While » : exécutée tant qu'une condition est vraieS'arrête lorsque la condition devient fausse

« Until » : exécutée jusqu'à ce qu'une condition soit vraieS'arrête lorsque la condition devient vraie

« For » : exécutée un nombre de fois donné (compteur)

Attention : risque de boucle infinie sila condition d'une boucle « While » ne devient jamais faussela condition d'une boucle « Until » ne devient jamais vraie

La condition doit être modifiée par les instructions de boucle

Boucles (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 22

Boucle WhileExécution d'instructions tant qu'une condition est vraieSyntaxes :Do While condition Do instructions instructionsLoop Loop While conditioninstructions suivantes instructions suivantes

conditionvraie ?

instructions

instructionssuivantes

oui

non

conditionvraie ?

instructions

instructionssuivantes

oui

non

Boucles (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 23

Boucle UntilExécution d'instructions jusqu'à ce qu'une condition soit vraieSyntaxes :Do Until condition Do instructions instructionsLoop Loop Until conditioninstructions suivantes instructions suivantes

conditionvraie ?

instructions

instructionssuivantes

non

oui

conditionvraie ?

instructions

instructionssuivantes

non

oui

Boucles (3)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 24

Boucle ForExécution d'instructions un nombre de fois donné (connu)Syntaxes :For cpt=init To fin instructionsNext cptinstructions suivantes

For cpt=init To fin Step pas instructionsNext cptinstructions suivantes

cpt<fin ?

instructions

cpt=cpt+1

oui

non

cpt=init

instructionssuivantes

cpt=cpt+pas

Boucles (4)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 25

Boucle For Each (énumérateur)Exécution d'instructions pour chaque élément d'un ensembleSyntaxeFor Each élément In ensemble instructionsNext élémentRemarques

L'ensemble peut être un tableau ou une collectionLes instructions sont exécutées autant de fois qu'il y a d'élémentsLa variable élément prend tour à tour la valeur de chaque élément

ExempleFor Each chiffre In Array(1,5,3) Debug.Print chiffreNext chiffre

Boucles (5)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 26

DescriptionEnsemble d'instructions réalisant une tâche précise et retournant un résultat

Utilité : 

Modularité (découpage d'un problème en sous-problème)Réutilisabilité (appel en plusieurs endroits)

Distinguer :

L'implantation (entête+corps) = la fonction elle-mêmeL'appel de la fonction

Lien avec une fonction en mathématiques

Calcule un résultat à partir de paramètres (ou arguments)Ex. y = sin(x)

Fonctions (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 27

ImplantationSyntaxe

Function nomFonc ([params]) As type 'commentaires instructions nomFonc = résultatEnd Function

Remarquesrésultat doit avoir le type spécifié dans l'entêteLe retour d'un résultat utilise le nom de la fonction 

entête

corps

Fonctions (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 28

AppelSyntaxe

Function nomFonc ([params]) As type

End Function

Dim retour As typeretour = nomFonc ([valParams])

Remarquesretour  doit être du même type que la fonction (cf. entête)Les valeurs des paramètres valParams transmises lors de l'appel doivent correspondre (2 à 2) aux types déclarés dans l'entête pour ces paramètres params

implantation

appel

Fonctions (3)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 29

DescriptionFonction qui ne retourne pas de résultat

Syntaxe

ImplantationSub nomProc ([params])

'commentaires instructions End Sub

AppelCall nomProc ([valParams])

entête

corps

Procédures

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 30

DescriptionDonnée d'entrée de la fonction (ou la procédure)Rem. Parfois aussi donnée de sortie

Syntaxe d'un paramètre

[ByVal|ByRef] nomParam [As type]Remarques

Passage par défaut : par référence (ByRef)

Type par défaut : VariantSi plusieurs paramètres : les séparer par une virguleQuestion : quels sont les types et passages pour

ByVal param1, param2 As String

Paramètres (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 31

Passages de paramètresPassage par référence (ou: par adresse) (ByRef)

L'adresse mémoire de la variable est transmise à la fonctionLa fonction travaille directement sur la variableLa variable originale ressort modifiée de la fonction

Passage par valeur (ou: par copie) (ByVal)Une copie de la variable est créée et transmise à la fonctionLa fonction travaille sur cette copie de la variableLa variable originale n'est pas modifiée par la fonction

RemarquesGrande majorité des cas = passage ByValByRef utile si plusieurs résultats doivent être retournés

Paramètres (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 32

ExemplesSinus d'un angle exprimé en degrés

Entête Function sinDeg(ByVal angle as Double) As Double

Appel (ex.) y = sinDeg(30)

0.5Premier mot d'une phrase

Entête Function prem(ByVal phrase as String) As String

Appel (ex.) Debug.Print prem("Bonjour à tous")

"Bonjour"

Paramètres (3)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 33

Exemplesn premiers mots d'une phrase

Function prems(ByVal phrase as String,

ByVal n as Long) As StringDebug.Print prems("Bonjour à tous", 2) "Bonjour à"

Idem, en modifiant éventuellement n si incorrectFunction prems(ByVal phrase as String,

ByRef n as Long) As StringSub test() Dim nb As Long nb = 5 Debug.Print prems("Bonjour à tous", nb)

End Sub

"Bonjour à tous" et nb=3

Paramètres (4)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 34

Paramètres nommés à l'appelDescription : appel d'une fonction en utilisant le nom de ses paramètresUtilité

Clarification du codeSpécification des paramètres dans un ordre quelconqueNon-spécification des paramètres optionnels

Syntaxeretour = nomFonc (nomParam1:=valParam1,

nomParam2:=valParam2, )ExempleMsgBox(prompt [,buttons] [,title] [,helpfile, context])

rep = MsgBox(title:="Titre", prompt:="Bonjour à tous")

Paramètres (5)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 35

Paramètre optionnelDescription : paramètre pouvant être omis à l'appel de la fonctionSyntaxe d'un paramètre optionnelOptional [ByVal|ByRef] nomParam [As type] [=valDéf]Remarques

Les paramètres suivants doivent aussi être optionnels ; les paramètres optionnels se placent donc en fin de listePréciser systématiquement une valeur par défaut

Exemple Function concat(ByVal ch1 As String, ByVal ch2 As

String, Optional ByVal sep As String="-") As String

Paramètres (6)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 36

DescriptionEnsemble d'éléments de même type, dans lequel les éléments sont repérés par leur indice (ou numéro d'index)

Utilité

Stockage aisé d'un grand nombre d'éléments   Ex. ensemble de notes, de points de l'espace 3D, ...Traitements systématiques sur ces éléments   Ex. parcours avec une boucle For

valeurs 5,5 12,5 9,0 0,0 10,0 14,0 11,5 ...

indices 0 1 2 3 4 5 6 ...

Introduction aux tableaux

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 37

Nombre de dimensions1D (vecteur)

2D (matrice)= tableau de tableaux

n-D (hypervolume)

Taille(s) (dans chaque dimension)

indice max. ou indices min. et max.éventuellement modifiable

valeurs 5,5 12,5 9,0 0,0 ...

indices 0 1 2 3 ...

indices de colonnes0 1 2 3

indi

ces de

 lign

es

0 0 255 0 …

1 0 0 255 …

2 0 255 255 …

3 255 255 255 …

4 0 127 0 …

... ... ... ... ...

Caractéristiques des tableaux

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 38

SyntaxeVecteur

En donnant l'indice maximal et le type des éléments :

Dim nomTab(indMax) [As type]En donnant explicitement les indices minimal et maximal

Dim nomTab(indMin To indMax) [As type]Matrice

Dim nomTab(indMax1,indMax2) [As type]Dim nomTab(indMin1 To indMax1,

indMin2 To indMax2) [As type]Remarque : possibilité d'utiliser la notation suffixée

Dim nomTabSuffixe(indMax)Dim nomTabSuffixe(indMin To indMax)

Déclaration de tableaux (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 39

Indices des élémentsIndice minimal

par défaut : 0

fixé à 1 avec Option Base 1 dans  section (Déclarations)

Nombre d'éléments : dépend des indices et d'Option Base

Retrouver les limites des indicesLBound(t) donne l'indice minimal, UBound(t) l'indice maximal

Préciser éventuellement la dimension : LBound(t,2)

DéclarationOption Base 0 Option Base 1

Nb élts LBound(t) UBound(t) Nb élts LBound(t) UBound(t)

4 0 3 3 1 32 2 3 2 2 312 0 2 6 1 218 0 2 15 0 2

Dim t(3) As Dim t(2 To 3) As Dim t(2,3) As Dim t(0 To 2,5) As

Déclaration de tableaux (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 40

Tableau constant

Utiliser Array  Ex. tab = Array(5.5, 12.5, 9, 0, 10, 14, 11.5)

Lecture d'une valeur

d'un vecteurnomTab(indice) nomTab(ind1, ind2)

Écriture d'une valeurnomTab(indice) = valeur nomTab(ind1, ind2) = valeur

Rem.: les indices doivent être compris dans les limites !

Parcours

d'un vecteur For i=LBound(t) To UBound(t) For i=LBound(t,1) To UBound(t,1) | ... | For j=LBound(t,2) To UBound(t,2) Next i | | ... | Next j Next i

Passage en paramètre : utiliser le type Variant

Utilisation des tableaux

d'une matrice

d'une matrice

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 41

Utilité : tableau dont la taille est inconnue lors du codagen'est déterminée que lors de l'exécution

Exemples

Stockage de valeurs numériques dans un tableau, avec un nombre de valeurs spécifié par l'utilisateur

Dim nbVal As IntegernbVal = InputBox("Nb de valeurs :")Dim tabVal(nbVal)

Fonction retournant le tableau des mots contenus dans une phrase paramètre

Tableaux dynamiques (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 42

SyntaxeDéclaration d'un tableau sans spécifier sa taille

Dim nomVar() [As type]Redimensionnement dynamique (en fonction des besoins)

ReDim [Preserve] nomVar(indMax) [As type]Remarques

Plusieurs redimensionnements successifs possiblesTaille réduite  éléments supplémentaires perdusLe type des éléments n'est en général pas modifié (As type  omis)Preserve

conserve les valeurs existantes

ne modifie pas le nombre de dimensions

ne permet de redimensionner que la dernière dimension

Tableaux dynamiques (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 43

ExempleStockage de valeurs numériques dans un tableau, avec un nombre de valeurs spécifié par l'utilisateur

Dim i As IntegerDim nbVal As IntegerDim tabVal() As Double

nbVal = InputBox("Nb de valeurs :")ReDim tabVal(1 To nbVal) 'Toujours des DoubleFor i = 1 To nbVal tabVal(i) = InputBox("Valeur :")Next i

Tableaux dynamiques (3)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 44

ObjetDescription : entité (concrète ou abstraite) définie par

ses caractéristiques (propriétés = « variables »)son comportement (méthodes = « fonctions »)

Les objets ayant des caractéristiques communes et même comportement forment une classe (« type »)Exemples

Objets concretsChaise { nb pieds, couleur, matériau, déplacer(), empiler() }

Ordinateur { fréquence µP, prix, démarrer(), arrêter() }

Objets abstraitsNombre complexe { Re, Im, abs(), conj() }

Fenêtre graphique { position, taille, déplacer(), fermer() }

Introduction aux objets

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 45

DescriptionComposant d'une application OfficeOrganisation hiérarchique

Exemples

Classe Description Classe DescriptionApplication Application

Classeur ouvert Document Document texte ouvertFeuille de calcul

Range Plage de cellules Range Ensemble de caractères contigus

Excel Word

Logiciel Excel Logiciel WordWorkbookWorksheet

Objets VBA

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 46

WorkbookClasseur (ouvert dans Excel)Collection Workbooks = ensemble des classeurs ouverts

Cas particulier : ActiveWorkbook = classeur actif

Worksheet

Feuille de calcul (d'un classeur)Collection Worksheets = ensemble des feuilles d'un classeur

Cas particulier : ActiveSheet = feuille active

Range

Plage de cellules (d'une feuille de calcul)Rem. Éventuellement réduite à une seule cellule

Cas particuliersActiveCell = cellule activeSelection = cellules sélectionnées

Objets Excel principaux

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 47

Description

Caractéristique d'un objetAccès par notation pointée : Objet.Propriété

ExemplesNom du classeur actif : ActiveWorkbook.Name

Nom complet du classeur actif : ActiveWorkbook.FullName

Sauvegarde du classeur actif effectuée ? : ActiveWorkbook.Saved

Nombre de classeurs ouverts : Workbooks.Count

Nombre de feuilles du classeur actif : Worksheets.Count

Nom de la feuille active : ActiveSheet.Name

Adresse de la cellule active : ActiveCell.Address

Valeur de la cellule active : ActiveCell.Value

Nombre de cellules sélectionnées : Selection.Count

Propriétés (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 48

Lecture dans une variable

Si la propriété est une valeur simple (chaîne, nombre, ...)nomVar = Objet.Propriété

Si la propriété est elle-même un objetSet nomVar = Objet.Propriété

Écriture (modification de la propriété)Objet.Propriété = valeur

Attention : impossible si la propriété est en lecture seule

ExemplesnomClasseur$ = ActiveWorkbook.Name

Set cellulesNonVides = ActiveSheet.UsedRange

ActiveCell.Value = Date()

ActiveCell.Address = "$A$2" est impossible

Propriétés (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 49

Description

Action applicable sur (ou réalisable par) un objetAccès par notation pointée : Objet.Méthode[(params)]

ExemplesSauvegarde du classeur actif : ActiveWorkbook.Save

Fermeture du classeur actif : ActiveWorkbook.Close

Fermeture du classeur actif en enregistrant les modifications : ActiveWorkbook.Close(True)

Ouverture d'un classeur : Workbooks.Open("Toto.xls")

Suppression de la feuille active : ActiveSheet.Delete

Effacement de la cellule active (valeur) : ActiveCell.ClearContents

Suppression de la cellule active avec décalage vers la gauche : ActiveCell.Delete(xlShiftToLeft)

Méthodes

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 50

Description

Ensembles d'objets (items) de même classeLa classe définit (en général) le nom de la collection

   Ex. : Workbooks, Worksheets, CommandBars, ...Chaque item porte un nom (clé) et un numéro

Accès à un item

Par son nom Ex. : Worksheets("Feuil1")

Par son numéro Ex. : Worksheets(2)

Propriétés

Nombre d'items dans la collection : propriété Count

Ex. : Worksheets.Count

Collections

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 51

En parcourant la hiérarchie

SyntaxeApplication.Objet1.Objet2.

ExemplesSet classeurActif = Application.ActiveWorkbook? Application.ActiveWorkbook.Worksheets(3).Name? Application.ActiveWorkbook.Worksheets(Application .ActiveWorkbook.Worksheets.Count).Name

En utilisant une propriété globale (accessible directement). Ex. :

ActiveWorkbook pour Application.ActiveWorkbook

Worksheets pour Application.ActiveWorkbook.Worksheets

ActiveSheet pour Application.ActiveWorkbook.ActiveSheet

ActiveCell pour Application.ActiveWindow.ActiveCell

Selection pour Application.ActiveWindow.Selection

Désignation d'un objet

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 52

Définition

Description : plage de cellule(s) d'une feuille de calculPas forcément sélectionnées, ni valuées, ni contiguësÉventuellement réduite à une seule cellule

Exemples

ActiveCell

Selection

ActiveCell Selection Range("D13:E14")

Range (1)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 53

Création et parcours : l'essentielCréation

Propriétés particulièresPropriétés globales     : ActiveCell, Selection

Propriété d'objet Worksheet : feuille.UsedRange

Propriété (globale) Range de la feuille activeEn utilisant l'adresse (absolue/relative) : Range(adresse)

En utilisant un nom de plage défini      : Range(nom)

Parcours (ex.)Dim plage As Range, cellule As Range

Set plage = Selection

For Each cellule in plageDebug.print cellule.Value

Next cellule

Range (2)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 54

Création à partir d'autres plagesComment obtenir ...

une seule cellule d'une plageplage.Cells(numLig,numCol)

ou plage.Cells(numCell)une sous-plage en ligne ou en colonneplage.Rows(numLig)

ou plage.Columns(numCol)une plage spécifiée par décalageplage.Offset(numLig,numCol)

une plage union de plusieurs autres plagesUnion(plage1,plage2,)

la plage entourant une autre plageplage.CurrentRegion

numLig=2numCol=2numCell=6

numLig=2

numCol=2

numLig=1numCol=2

A A A AA A A A

A A A AA A A A

Range (3)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 55

Propriétés principalespar ordre d'importance décroissante

Propriété Description Type

Value1 cellule unique Valeur de la cellule Dépend du contenu

L+EPlusieurs cellulesValeur des cellules Variant (tableau)

Address 1/+ cellules Adresse Excel String LCount 1/+ cellules Nombre de cellules Long L

Formula1 cellule unique Formule de la cellule String

L+EPlusieurs cellules Formules des cellules Variant (tableau)

Row, Column 1/+ cellules n° première ligne, colonne Long LFont 1 cellule unique Attributs de police Font L...Interior 1 cellule unique Intérieur (fond, etc.) Interior L...Height, Width 1/+ cellules Hauteur, Largeur Double L+ENext, Previous 1 cellule unique Cellule suivante, préc. L...

Typede plage

Lect/écr.

Range (1 cellule)

Range (4)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 56

Méthodes principalespar ordre d'importance décroissante

Méthode [(params)] Type de plage DescriptionSelect 1/+ cellules Sélectionne les cellulesClearContents 1/+ cellules Efface les formulesClear 1/+ cellules Efface tout (formules, format, ...)Activate 1 cellule unique Activation d'une cellule de la sélection

1/+ cellules Supprime les cellules en décalant les voisines1/+ cellules Insère des cellules en décalant les voisines1/+ cellules Copie ou Coupe les cellules1/+ cellules Retourne des cellules spéciales (Range)1/+ cellules Recherche une information1/+ cellules Remplace une chaîne par une autre

Sort 1/+ cellules Trie les valeurs (selon une colonne, ...)

Delete(décalage)Insert(décalage)Copy, CutSpecialCells(type)Find(quoi)Replace(quoi,par)

Range (5)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 57

Exemples et exercicesExemples

Sélectionner la cellule B2 (de la feuille active) Range("B2").Select

Effacer la plage utilisée dans la feuille active ActiveSheet.UsedRange.Clear

Activer la dernière cellule de la sélection Selection.Cells(Selection.Count).Activate

Écrire et tester les procéduresajusterSél() qui étend (ou restreint) la sélection à la plage de cellules non vides dans laquelle elle est incluse (ou qu'elle inclut)échange() qui permute les valeurs des cellules sélectionnées si elles sont au nombre de 2selectLigne() qui sélectionne les lignes complètes de la plage sélectionnée (utiliser la propriété EntireRow)

Range (6)

Types et variables Structures de contrôle Fonctions Tableaux Objets

Master Génie Industriel – Tableur 58

Cours en lignehttp://www.excelabo.net/http://excel.developpez.com/cours/?page=proghttp://www.commentcamarche.net/contents/1374-macros-comment-les-creer

http://www.info-3000.com/vbvba/

Pratique/exempleshttp://excel.developpez.com/sources/http://cherbe.free.fr/index.phphttp://perso.fundp.ac.be/~jmlamber/vba/Notes.htmlhttp://patrice.rabiller.pagesperso-orange.fr/Visual%20Basic%20Excel/indexVB.htm

Avancé

http://spreadsheetpage.com/index.php/tipshttps://huit.re/zcURxCzW (Excelabo)

Références