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