Visual Basic pour Applications (résumé) 1 – Variables

Transcription

Visual Basic pour Applications (résumé) 1 – Variables
Université de Lille - Sciences et Technologies
Introduction à VBA
Visual Basic pour Applications (résumé)
− Olivier Losson −
1 – Variables
1.1. Types de données
Type
Boolean
Byte
Integer
Long
Single
Double
Date
String
Variant
Description
Booléen
Octet
Entier
Entier long
Réel en simple précision
Réel en double précision
Date
Chaîne de longueur fixe
Donnée de tout type
Notes
Initialis.
Ne peut prendre que les valeurs True ou False
False
Plage : 0..255
0
Plage : -32 768..32 767
0
Plage : environ -2.109..+2.109
0
38
-45
-45
38
Plages : -3,4.10 ..-1,4.10 et 1,4.10 ..3,4.10
0
Plages : -1,8.10308..-4,9.10-324 et 4,9.10-324..1,8.10308
0
Plages : 01/01/0100..31/12/9999 et 00:00:00..23:59:59
00:00:00
0 à environ 65 400 caractères
""
Type par défaut ; écriture simplifiée (conversion transparente) Empty
1.2. Déclaration
-
implicite (Dim nomVar)
type Variant (ex. Dim uneVariable)
en spécifiant le type (Dim nomVar As type)
type explicite (ex. Dim uneChaine As String)
en utilisant un suffixe (Dim nomVar suffixe)
type donné par le suffixe (ex. Dim uneChaine$)
Suffixe
%
&
Type de données
Integer
Long
Suffixe
!
#
Type de données
Single
Double
Suffixe
@
$
Type de données
Currency
String
1.3. Portée
-
spécifiée lors de la déclaration en utilisant Public ou Private à la place de Dim
dépend de l'endroit où est déclarée la variable :
Instruction de déclaration
Dim
Dim
Public
Public
Private
Private
Lieu de déclaration
Portée de la variable
Procédure
Module (section Déclarations)
Procédure
Module (section Déclarations)
Procédure
Module (section Déclarations)
Locale à la procédure
Locale au module
Interdit : réservé au niveau module
Procédures de tous les modules du projet
Locale à la procédure (= Dim)
Locale au module (= Dim)
1.4. Tableaux
- indicés à partir de 0 (par défaut) ou 1 (instruction Option Base 1 au niveau module)
- déclaration par Dim, Private ou Public
• tableau 1D (vecteur) : Dim nomTab ( [indiceMin To] indiceMax )
• tableau 2D (matrice) : Dim nomTab ( [indiceMin1 To] indiceMax1 , [indiceMin2 To] indiceMax2 )
- dynamiques
• déclaration : Dim nomTab () [As type]
• redimensionnement : ReDim [Preserve] nomTab (indices)
1.5. Constantes
valeur ; améliore la lisibilité du code
- association nom
- constantes prédéfinies (ex. vbCr
chr(13) ; wdDoNotSaveChanges
False)
- déclaration de constante personnalisée : Const nomConst [As type] = expression
1
Introduction à VBA
Université des Sciences et Technologies de Lille
2 – Instructions
2.1. Expression
- combinaison de variables, de constantes et d'opérateurs
- liste des opérateurs par priorité décroissante de gauche à droite
Arithmétiques
Comparaison
Logiques
^
=
Not
- [négation]
<> [différent]
And
* et /
<
Or
\
>
Xor
Mod
<=
Eqv
+ et >=
Imp
&
Like
Is
2.2. Types d'instructions
- de déclaration : nommer une variable, constante ou procédure (Ex. Dim, Const, Sub, Function, …)
- d'affectation : nomVar = expression où expression retourne un résultat de même type que la variable
- exécutables : appel de fonction ou de méthode, instruction de contrôle (cf. ci-dessous), …
- commentaires, introduits par Rem ou ' (apostrophe) : tout ce qui suit sur la même ligne est ignoré.
2.3. Structures de contrôle
Type
Syntaxe(s)
Boucles
Do Until condition
Instructions
Loop
Do While condition
Instructions
Loop
Do
Instructions
Loop Until condition
Do
Instructions
Loop While condition
For compteur=début to fin [step pas]
Instructions
Next compteur
For Each element In groupe
instructions
Next element
If condition Then instructions
Effet
Exécute les instructions jusqu’à ce que la condition soit vraie. Si la
condition est vraie dès le premier test, les instructions ne sont jamais
exécutées.
Exécute les instructions tant que la condition est vraie. Si la condition est
fausse dès le premier test, les instructions ne sont jamais exécutées.
Exécute les instructions jusqu’à ce que la condition soit vraie.
Les instructions sont au moins exécutées une fois.
Exécute les instructions tant que la condition est vraie.
Les instructions sont au moins exécutées une fois.
Exécute les instructions le nombre de fois déterminé par le compteur. Ce
dernier compte de début à fin par pas spécifié (pas de 1 par défaut).
Pour chaque élément du groupe spécifié (tableau ou collection), exécute les
instructions en utilisant le nom element pour désigner le n-ième élément.
Exécute les instructions si la condition est vraie.
Instructions conditionnelles
(Le tout sur une seule ligne)
2
If condition Then
instructions1
[Else
instructions2]
End If
If condition1 Then
instructions1
ElseIf condition2 Then
instructions2
ElseIf condition3 Then
instructions3
…
[Else
instructionsElse]
End If
Select Case expressionTestée
Case listeValeurs1
instructions1
Case listeValeurs2
instructions2
…
[Case Else
instructionsElse]
End Select
Exécute les instructions1 si la condition est vraie.
Si la clause Else est présente, alors exécute les instructions2 si la condition
n’est pas vraie.
Exécute les instructions1 si la condition1 est vraie ; dans le cas contraire,
fait un nouveau test sur condition2. Si celle-ci est vraie, les instructions2
sont exécutées ; sinon, on fait un nouveau test sur condition3, et ainsi de
suite.
Si la clause Else est présente, alors les instructionsElse sont exécutées si
toutes les conditions précédentes sont fausses.
En fonction de la valeur d’une expressionTestée, branche le programme
sur tel ou tel jeu d’instructions. Si l’expression a pour valeur l’une de celles
contenues dans listeValeurs1, ce sont les instructions1 qui sont exécutées,
et ainsi de suite pour toutes les listes de valeurs. Si la clause Case else est
présente et qu’aucune liste de valeurs ne contient l’expressionTestée, alors
ce sont les instructionsElse qui sont exécutées en définitive.
Université de Lille - Sciences et Technologies
Introduction à VBA
3 – Fonctions et procédures
3.1. Fonctions prédéfinies
- de conversion :
chaîne : Asc (char ASCII), Chr (ASCII char), Str (nb chaîne), Val (chaîne nb)
• nombre
• majuscules
minuscules : LCase (en minuscules), UCase (en majuscules)
• transtypage : CBool (en booléen), CDate (en date), CInt (en entier), CStr (en chaîne), …
- sur les chaînes :
• sous-chaînes : Left (partie gauche), Right (partie droite), Mid (sous-partie)
• informations : Len (longueur), Instr (recherche de caractère), StrComp (comparaison)
• modification : Mid (sous-partie), LTrim, Rtrim, Trim (élimination des espaces à G, à D, les 2)
• génération de chaînes : Space (espaces), String (caractère répété)
- autres :
• maths : Sin, Atn, Exp, Sgn (signe), Rnd (nb aléatoire), Abs (val absolue), Sqr (√)
• données système : CurDir (répertoire courant), Dir (contenu répertoire), Date, Time (date et heure)
3.2. Macros
Type
Procédure ("macro commande")
Caractéristique Ne retourne aucune valeur
Déclaration Sub nomProcedure ([arguments])
' commentaires
…
instructions
…
End Sub
Appel
nomProcedure [args]
ou Call nomProcedure ([args])
Fonction ("macro fonction")
Retourne une valeur typée
Function nomFonction ([arguments]) [As type]
' commentaires
…
instructions
…
nomFonction = expression
End Function
Sans utilisation du résultat : nomFonction [args]
Utilisation du résultat : nomVar = nomFonction ([args])
3.3. Arguments
- Syntaxe d'un argument
Passage par adresse (ou par référence)
Passage par valeur
La procédure accède à la variable proprement dite et La procédure accède à une copie de la variable et ne
modifie donc la valeur réelle de cette dernière
modifie donc pas la valeur réelle de cette dernière
[ByRef] nomArg [As type]
-
-
ByVal nomArg [As type]
Déclaration
• d'une liste d'arguments : les séparer par des virgules
• d'argument(s) optionnel(s) (en queue de liste) : Optional [ByVal | ByRef] nomArg [As type] [= valDéfaut]
Passage d'arguments lors de l'appel de procédure ou fonction :
• sans utiliser les arguments nommés : nomMacro [(]valArg1, valArg2,… [)]
• en utilisant les noms des arguments : nomMacro [(]nomArg2:=valArg2, nomArg1:=valArg1,… [)]
3.4. Gestion des erreurs
- Schéma général :
Sub nomProcédure (…)
On Error Goto ligne
…
'corps de la procédure
Exit Sub
'évite d’exécuter la routine de gestion d’erreur en l’absence d’erreur
ligne:
'début de routine de gestion d’erreur
instructions si erreur
Resume {0|Next|etiquette}
'etiquette doit se trouver dans le corps de la même procédure
End Sub
3
Introduction à VBA
Université des Sciences et Technologies de Lille
4 – Objets
4.1. Notion d'objet
- Définition : composant d'une application défini par
• ses propriétés (variables définissant les caractéristiques de l'objet – souvent elles-mêmes des objets)
• ses méthodes (fonctions définissant le comportement de l'objet)
- Exemples :
• classeur Excel : { Nom As String, FeuilleActive As WorkSheet; Fermer(), Sauver() }
• sélection dans Word : { Caractères As String, Document As Document; Copier(), Couper() }
4.2. Accès aux objets
- Lecture d'une propriété : variable = Objet.Propriété
- Ecriture d'une propriété (si elle est en lecture/écriture) : Objet.Propriété = expression
- Exécution d'une méthode : même règle que pour les macros (cf. section 3) : Objet.Méthode [(Arguments)]
où Objet désigne la hiérarchie (Application.Objet1.Objet2.⋯.ObjetN) permettant d'accéder à l'objet voulu.
4.3. Collections
- Définition : ensemble d’objets connexes (de même “type” – on parle de classe en terminologie objet). La
classe définit le nom de la collection, par ex. Worksheets. Chaque élément (ou item) porte un nom (clé, de
type chaîne) et un numéro (index, numérique).
- Accès à un item :
• par son nom : Worksheets("Feuil2")
• par son numéro : Worksheets(2)
- Toutes les collections sont des objets possédant en commun :
• les propriétés Count (nombre d'items), Application (Excel, Word, …) et Parent (objet supérieur)
• les méthodes Add() (ajout d'un item) et Item() (accès à un item – privilégier l'accès par nom ou n°)
4.4. Hiérarchie des objets
- Principe : certains objets (conteneurs) en contiennent d'autres. Le conteneur supérieur est Application.
- Exemples
........................ Application EXCEL
.... Classeurs de l'application (Collection)
Feuilles de calcul de chaque classeur
................... Plage de cellules (sélection, ligne,…)
-
......................Application WORD
.....Documents de l'application
......................Zone contiguë de texte
Propriétés et méthodes globales : accessibles directement, sans décrire leur hiérarchie. C'est le cas de la
plupart des propriétés et méthodes de l'objet Application (cf. Explorateur d'objets (F2), liste Classes,
premier élément <globales>).
4.5 Exemples
- Excel
NomFeuille$ = ActiveSheet.Name
MsgBox (ActiveSheet.UsedRange.Address)
Stocke le nom de la feuille de calcul courante
Affiche dans une boîte de message l'adresse de la
plage de cellules utilisées dans la feuille courante
Worksheets(1).Range("B2").Borders(xlBottom).Weight=xlThin
Définit une bordure inférieure fine pour la cellule
B2 de la première feuille (du classeur courant)
Worksheets("Feuille3").Range("A1:B2").Insert(xlShiftDown)
Décale vers le bas la plage A1:B2 de la "Feuille3"
Dim p As Range
Stocke dans une variable (objet Range) les cellules
Set p = Selection.SpecialCells(xlCellTypeConstants,xlNumbers) de la plage sélectionnée contenant des nombres
-
Word
ActiveDocument.Range.InsertAfter("Salut")
If Selection.Information(Type:=wdWithInTable) Then
4
Insère le mot "Salut" à la fin du document courant
Teste si la sélection se trouve dans un tableau