Вы находитесь на странице: 1из 62

Visual Basic for Applications

(sous Excel)
Frdric Cadier
ENST Bretagne - Dpartement LUSSI
frederic.cadier@enst-bretagne.fr
Cadier F. (ENST Bretagne) VBA 1 / 62
Plan de la prsentation
1 Excel et VBA
2 Bases et Concepts
3 Le langage VBA
4 UserForm
Cadier F. (ENST Bretagne) VBA 2 / 62
Excel et VBA
Plan de la prsentation
1 Excel et VBA
2 Bases et Concepts
3 Le langage VBA
4 UserForm
Cadier F. (ENST Bretagne) VBA 3 / 62
Excel et VBA Bref Historique des Tableurs...
VisiCalc Cr par D.Bricklin et B.Frankston, en 1978, pour Apple II
SuperCalc Cr par Sorcim, pour CP/M, puis pour PC (1981)
Lotus 1-2-3 Cr par Lotus, en 1983, pour PC, puis pour DOS et OS/2 (1989)
et Windows (1991)
Quattro Cr par Borland, en 1987 (version Pro en 1989), pour PC, puis
pour Windows (1992)
Multiplan Cr par Microsoft, en 1982, pour CP/M, puis Apple II, Apple III,
XENIX et MS-DOS
Excel Cr par Microsoft, en 1985, pour Macintosh !!
Cadier F. (ENST Bretagne) VBA 4 / 62
Excel et VBA Bref Historique des Tableurs...
Version Windows :
Excel 2 en 1987 : langage de macro XLM
Excel 3 en 1990 : ajout de fonctionnalits (dessin, support OLE, travail en
groupe, BDD externes...)
Excel 4 en 1992 : Excel prend la tte du march...
Excel 5 en 1994 : langage de macro VBA!!
Excel 95 (Windows 95) : application rcrite...
Excel 97 en 1997 : mise en place de VBA au niveau dOce
2000 en 1999, 2002 en 2001 et 2003 en... 2003 ! : mises jour et volutions
mineures
Cadier F. (ENST Bretagne) VBA 5 / 62
Excel et VBA Excel
Vue densemble :
Interface...
Saisie des donnes :
Valeur numrique
Texte
Valeur boolenne (true ou false)
Saisie des formules (simples et matricielles)...
Cadier F. (ENST Bretagne) VBA 6 / 62
Excel et VBA Excel
Utilisation des noms...
Cette fonctionnalit est essentielle pour le dveloppeur VBA:
aucune mise jour du code en cas de dplacement dune cellule, mais le nom
reste valide !
lisibilit du code
Exemple :
Dplacement de cellules nommes :
le code Range(D1 : D10) nest pas mis jour et nest plus valide.
tandis que Range(DataClient) est toujours valide.
Cadier F. (ENST Bretagne) VBA 7 / 62
Excel et VBA Excel
Les applications Oce sont hautement programmables, notamment grce VBA,
qui permet de manipuler leurs modles dobjets.
Exemple : Excel
Les objets dExcel comprennent entre autres :
lapplication elle-mme,
les classeurs dExcel,
les feuilles de calcul et de graphique dans un classeur,
les lignes ou les colonnes dans une feuille de calcul,
les graphiques dans une feuille de graphique,
les dirents graphismes dun graphique...
Cadier F. (ENST Bretagne) VBA 8 / 62
Excel et VBA Les chiers dExcel
.xls Fichier classeur : ses feuilles, le code VBA...
.xlw Environnement : informations sur lespace de travail
.xlt Fichier modle de classeur
.xlb Fichier de conguration des barres doutils et des menus
.xla Macro complmentaire : fonctions, barre doutils...
HTML Peut servir de format natif depuis Excel 2000
XML Importation des donnes XML depuis Excel 2003
Cadier F. (ENST Bretagne) VBA 9 / 62
Excel et VBA Un Peu de Mthode...
Quelques bonnes questions, avant la conception :
Utilisateur cible : plus ou expriments et/ou intresss.
Type dapplication tableur :
Personnelle Dveloppe par et pour le dveloppeur ;
Utilitaire Ensemble de fonctions gnralistes ;
Mono-Bloc Ne contient quun seul tableau de donnes ;
Modlisation dHypothses :
Application complexe, faisant intervenir des calculs lourds ;
Interface BDD:
La convivialit dun tableau alli la puissance dune base de
donnes ;
Cl en main :
Lutilisateur est entirement guid dans son utilisation de
lapplication.
Cadier F. (ENST Bretagne) VBA 10 / 62
Excel et VBA Un Peu de Mthode...
Cycle de conception :
1. Dterminer les besoins des utilisateurs,
2. Planication du dveloppement :
Structure du ou des chier(s)
Structure des donnes
Type de linterface utilisateur
Formules vs. code VBA
Macro complmentaire ou chier XLS
Gestion des erreurs, des version dExcel, des problmes de performance, du
niveau de scurit...
3. Dveloppement
4. Test de lapplication
5. Protger lapplication et masquer les lments inutiles
6. Distribuer lapplication
7. Mises jour...
Cadier F. (ENST Bretagne) VBA 11 / 62
Bases et Concepts
Plan de la prsentation
1 Excel et VBA
2 Bases et Concepts
3 Le langage VBA
4 UserForm
Cadier F. (ENST Bretagne) VBA 12 / 62
Bases et Concepts Do vient le VBA?
Au dbut tait le BASIC (Beginners All-purpose Symbolic Instruction Code),
apparu dans les annes 1960 dans les universits pour lapprentissage de la
programmation.
Dabord uniquement interprt, ce langage volue, samliore et devient
compilable.
En 1990, Microsoft introduit Visual Basic, puis le VBA en 1994 avec Oce 95,
qui reprend les mmes bases conceptuelles.
Cadier F. (ENST Bretagne) VBA 13 / 62
Bases et Concepts Notions fondamentales du VBA
Code Une action en VBA est inscrite dans du code.
Procdure Au sein du code, les procdures eectuent des actions.
Module Les modules VBA sont stocks dans les classeurs, et contiennent
le code, et les procdures.
Objet Ce sont les entits manipules par le langage. Les objets sont
organiss sous forme de hirarchies, possdent des proprits et
des mthodes.
Collection Objet particulier contenant un ensemble dautres objets, tous
identiques.
Variable Entit portant un nom, et dans laquelle on stocke une valeur.
Cadier F. (ENST Bretagne) VBA 14 / 62
Bases et Concepts Retour sur le Modle dObjets dExcel
Cadier F. (ENST Bretagne) VBA 15 / 62
Bases et Concepts Retour sur le Modle dObjets dExcel
Cadier F. (ENST Bretagne) VBA 16 / 62
Bases et Concepts Le VBE (Visual Basic Editor)
Explorateur de projets :
Liste les classeurs ouverts et leurs modules.
Explorateur dObjets :
Ache lensemble des objets, de leurs mthodes et proprits.
Proprits Contient lensemble des proprits statiques de lobjet en cours
ddition.
Excution Excute des procdures et/ou du code VBA.
Variables Locales :
En cours de dboguage, liste lensemble des variables locales la
procdure en cours.
Espions En cours de dboguage, permet de suivre lvolution dune
slection de variables.
Fentres de code :
Permettent ldition du code.
Cadier F. (ENST Bretagne) VBA 17 / 62
Bases et Concepts crire du code
Il existe deux moyens dcrire du code :
Saisie manuelle Le VBE contient des outils daide la saisie (auto-compltion,
Info express, Info paramtres...)
Enregistreur de macro Trs utile pour construire rapidement une macro,
enregistre en VBA.
Exemple :
Sub DisBonjour()
Msg = "Vous appelez-vous " & Application.UserName & "?"
Ans = MsgBox (Msg, vbYesNo)
If Ans = vbNo Then
MsgBox "Dommage, jai tent ma chance."
Else
MsgBox "Je le savais !!"
End If
End Sub
Cadier F. (ENST Bretagne) VBA 18 / 62
Le langage VBA
Plan de la prsentation
1 Excel et VBA
2 Bases et Concepts
3 Le langage VBA
4 UserForm
Cadier F. (ENST Bretagne) VBA 19 / 62
Le langage VBA Commentaires
Commentaires
lment descriptif, i.e. non interprt, du code.
Il peut tre insr nimporte quel endroit dans une ligne, et tout ce qui le suit
est ignor.
On le signale laide dun apostrophe
Exemple :
Sub Test()
La mthode ClearContents vide les cellules,
mais ne supprime pas la mise en page
ActiveCell.ClearContents Pas besoin de paramtre...
ActiveCell.Value = "Lapostrophe est entre guillemets"
End Sub
Cadier F. (ENST Bretagne) VBA 20 / 62
Le langage VBA Variables
Variables
Emplacements de stockage nomms en mmoire.
Rgles de nommage :
caractres alphanumriques ou "_" uniquement
le 1
er
caractre doit tre alphabtique
la casse nest pas prise en compte
254 caractres maximum
Attention aux mots-cls rservs du langage
Exemple :
Je_Suis_1_Variable = "hihi" est valide
je_suis_1_variable est la mme variable
Next = 132 nest pas valide
Cadier F. (ENST Bretagne) VBA 21 / 62
Le langage VBA Variables
Dclaration
On distingue 3 niveaux de dclaration :
local : mot-cl Dim
dclaration au sein dune procdure
accessible uniquement dans cette procdure
module : mot-cl Dim
dclaration en dehors de toute procdure
accessible dans toutes les procdures du module
publique : mot-cl Public
dclaration de niveau module
accessible dans toutes les procdures de tous les modules
De plus, on peut dclarer une variable comme tant ;
statique : mot-cl Static
dclaration de niveau local
conservation de la valeur la n de la procdure
constante : mot-cl Const
dclaration de nimporte quel niveau
ne peut tre modie
Cadier F. (ENST Bretagne) VBA 22 / 62
Le langage VBA Variables
Type de donne
Dans la dclaration, on peut prciser le type de donne :
Exemple :
Dim iVal As Integer
Si le type nest pas prcis, VBA utilise le type variant. Trs souple lutilisation,
il pnalise nanmoins lapplication sur la vitesse dexcution.
Note : Pour se forcer dclarer toutes les variables, on peut utiliser
Option Explicit en dbut de module.
Types de base : Byte, Boolean, Integer, Long, Single, Double, Currency,
Decimal, Date, Object, String et Variant
Cadier F. (ENST Bretagne) VBA 23 / 62
Le langage VBA Variables
Exemples : Les chanes et les dates
Lorsquelle est dclare avec le mot-cl Dim, on peut prciser la taille dune chane
de caractre au sein mme de sa dclaration :
Exemple :
Dim strText As String * 25
Une variable de type Date contient des dates allant du 1
er
janvier 100 au 31
dcembre 9999.
Une valeur de type Date est spcie laide du caractre #.
Exemple :
Const dtDate As Date = #1/1/2005#
Const dtMidi = #12:00:00#
Cadier F. (ENST Bretagne) VBA 24 / 62
Le langage VBA Variables
Tableaux (1/2)
Un tableau se dclare en faisant suivre le nom de la variable de parenthses, dans
lesquelles on spcie ses dimensions.
Exemple :
Dim iTab() As Integer Tableau dynamique
Dim vTab(1 To 100) Tableau de variant
Dim strTab(12, 12) As String Tableau 2 dimensions
Par dfaut, lindex de base est 0. Pour le forcer 1, on peut utiliser
Option Base 1 en dbut de module.
Pour laccs aux lments du tableau, on spcie lindice de llment entre
parenthses.
Exemple :
strTab(3, 4) = "toto"
Cadier F. (ENST Bretagne) VBA 25 / 62
Le langage VBA Variables
Tableaux (2/2)
Les tableaux dynamiques doivent tre dimensionns avant toute utilisation avec
linstruction ReDim. Les tableaux sont alors rinitialiss.
Pour conserver les lments prcdents, on utilise ReDim Preserve.
Exemple :
Dim iTab() As Integer
...
ReDim iTab(150) Le tableau est redimensionner
...
ReDim Preserve iTab(50) On << ajoute >> des lments
Cadier F. (ENST Bretagne) VBA 26 / 62
Le langage VBA Variables
Type de donne personnalis
On peut dnir ses propres types de donnes complexes (structures) laide du
mot-cl Type.
Exemple :
Type InfoClient
Entreprise As String * 25
Contact As String * 15
CodeRegion As Integer
Ventes As Long
End Type
...
Dim BDDClient() As InfoClient
Cadier F. (ENST Bretagne) VBA 27 / 62
Le langage VBA Manipulation dobjets et de collections
Manipulation dobjets
La structure With End With permet de simplier lcriture lors de la
manipulation de variables dobjets.
Exemple :
Ceci...
Selection.Font.Name = "Times New Roman"
Selection.Font.FontStyle = "Bold Italic"
Selection.Font.Size = 12
Selection.Font.Underline = xlUnderlineStyleSingle
... est quivalent cela
With Selection.Font
.Name = "Times New Roman"
.FontStyle = "Bold Italic"
.Size = 12
.Underline = xlUnderlineStyleSingle
End With
Cadier F. (ENST Bretagne) VBA 28 / 62
Le langage VBA Manipulation dobjets et de collections
Manipulation de collections (1/2)
La structure For Each Next permet dexcuter une mme tche sur tous les
lments dune collection.
Syntaxe :
For Each item In collection
[instructions]
[Exit For]
[instructions]
Next [item]
Notes :
item doit tre pralablement dclar si cest une variable dobjet.
lindication de item aprs Next permet une relecture plus aise du code.
Cadier F. (ENST Bretagne) VBA 29 / 62
Le langage VBA Manipulation dobjets et de collections
Manipulation de collections (2/2)
Exemple :
Dim wb As Workbook
Dim ws As Worksheet
Parcours toutes les feuilles de tous les classeurs
For Each wb In Application.Workbooks
For Each ws In wb.Worksheets
...
Next ws
Next wb
Cadier F. (ENST Bretagne) VBA 30 / 62
Le langage VBA Contrle de ux
Contrle de ux (1/6)
Linstruction GoTo permet de transfrer lexcution du programme vers une
etiquette (i.e. un nom suivi de ":").
Exemple :
Sub DisBonjour()
Msg = "Vous appelez-vous " & Application.UserName & "?"
Ans = MsgBox (Msg, vbYesNo)
If Ans = vbNo Then Goto mauvaiseReponse End If
MsgBox "Je le savais !!"
mauvaiseReponse:
End Sub
Cadier F. (ENST Bretagne) VBA 31 / 62
Le langage VBA Contrle de ux
Contrle de ux (2/6)
La construction If Then permet lexcution conditionnelle dune partie de code.
Syntaxe :
If condition Then
instructions-vrai
[ElseIf condition-n Then
[instructions-alternatives-n]]
[...]
[Else instructions-par-defaut]
End If
Note : Il existe aussi la fonction IIf :
Exemple :
MsgBox IIf(bCondition, "vrai", "faux")
Cadier F. (ENST Bretagne) VBA 32 / 62
Le langage VBA Contrle de ux
Contrle de ux (3/6)
La structure Select Case permet de choisir entre 2 conditions ou plus.
Syntaxe :
Select Case expressionTest
[Case liste-valeurs-test-n
[instructions-n]]
[...]
[Case Else
[instructions-par-defaut]]
End Select
Cadier F. (ENST Bretagne) VBA 33 / 62
Le langage VBA Contrle de ux
Contrle de ux (4/6)
La boucle For Next excute une srie dinstructions sur une plage de valeurs
entires.
Syntaxe :
For Compteur = start To end [Step valeur-pas]
[instructions]
[Exit For]
[instructions]
Next [Compteur]
Cadier F. (ENST Bretagne) VBA 34 / 62
Le langage VBA Contrle de ux
Contrle de ux (5/6)
La boucle Do While excute une srie dinstructions tant quune condition est
vrie.
Syntaxes :
Do [While condition]
[instructions]
[Exit Do]
[instructions]
Loop
ou
Do
[instructions]
[Exit Do]
[instructions]
Loop [While condition]
Cadier F. (ENST Bretagne) VBA 35 / 62
Le langage VBA Contrle de ux
Contrle de ux (6/6)
La boucle Do Until excute une srie dinstructions tant quune condition nest
pas vrie.
Syntaxes :
Do [Until condition]
[instructions]
[Exit Do]
[instructions]
Loop
ou
Do
[instructions]
[Exit Do]
[instructions]
Loop [Until condition]
Cadier F. (ENST Bretagne) VBA 36 / 62
Le langage VBA crire des procdures
Les procdures Sub
Les procdures Sub sassimilent des commandes excutes par lutilisateur.
Elles nont pas vocation raliser des calculs, mais permettent en revanche
dinteragir avec le modle dobjets (Excel, Word...).
Cadier F. (ENST Bretagne) VBA 37 / 62
Le langage VBA crire des procdures
Dclaration
[Private|Public] [Static] Sub nom([listeargs])
[instructions]
[Exit Sub]
[instructions]
End Sub
Private Visible uniquement dans le module de dclaration.
Public (par dfaut) Visible dans lintgralit du classeur.
Static Toutes les variables de la procdure seront Static
nom cf. rgles de nommage des variables.
listeargs Liste des paramtres passs la procdure.
Note : Option Private Module rend toutes les procdures prives.
Cadier F. (ENST Bretagne) VBA 38 / 62
Le langage VBA crire des procdures
Excution (1/2)
... partir du VBE:
F5 Excute la procdure ayant le focus.
Fentre Excution Permet lexcution de commandes VBA...
Procdures vnementielles Associes des... vnements.
... partir dune autre procdure :
Appel direct
[[projet.]module.]proc (listeargs)
Mot-cl Call
Call [[projet.]module.]proc (listeargs)
Mthode Application.Run
Run "[[projet.]module.]proc", listeargs
Run "[classeur.xls!]proc", listeargs
Cadier F. (ENST Bretagne) VBA 39 / 62
Le langage VBA crire des procdures
Excution... (2/2)
... partir dExcel :
Alt+F8 Attention : seules les procdures Sub publiques sans arguments y
sont visibles.
Touche de raccourci Une touche de raccourci peut tre dni partir de la bote
de dialogue Macro (Alt+F8).
Bouton/Menu On peut aecter une macro un lment de menu, ou un bouton
de barre doutils.
Click sur un objet On peut associer une macro un click sur nimporte quel objet
de Formulaires.
Cadier F. (ENST Bretagne) VBA 40 / 62
Le langage VBA crire des procdures
Passage darguments (1/2)
Certains des arguments peuvent tre facultatifs, laide de la syntaxe suivante :
Optional nom_var [As type] [= val_defaut]
Il est galement possible de spcier une liste de paramtres de longueur non
prdtermin, laide de la syntaxe suivante :
ParamArray nom_liste_var() As Variant
Note :
La liste est toujours un argument facultatif ;
Un ordre dans la liste des arguments doit tre respect : obligatoires, puis
facultatifs, puis lventuelle liste
Cadier F. (ENST Bretagne) VBA 41 / 62
Le langage VBA crire des procdures
Passage darguments (2/2)
Passage par rfrence (par dfaut) Seule ladresse de la donne est passe en
argument.
Passage par valeur Une copie de la donne est passe en argument : largument
doit tre dclar avec le mot cl ByVal.
Note : Une variable dnie laide dun type personnalis ne peut pas tre passe
par valeur.
Cadier F. (ENST Bretagne) VBA 42 / 62
Le langage VBA crire des procdures
Gestion des erreurs
Le principe est dintercepter les erreurs dexcution pour que lutilisateur ne se
retrouve pas devant une situation de bug.
Syntaxe :
On Error {Resume Next|Goto etiquette}
Resume Next Lexcution nest pas stoppe (attention aux erreurs en cascade).
Goto etiquette Lexcution est transfre vers une section de gestion des erreurs.
Notes :
Dans les deux situations, lobjet Err contient les caractristiques de lerreur.
On Error Goto 0 restaure la gestion standard des erreurs.
Cadier F. (ENST Bretagne) VBA 43 / 62
Le langage VBA crire des procdures
Les procdures Function
Les procdures Function sapparentent aux fonctions de feuille de calcul dExcel,
ou aux fonctions intgres de VBA.
Elles sont habituellement utilises comme lment dune expression VBA, ou dans
des formules de feuille de calcul.
Elles ne peuvent pas interagir avec les objets (Excel, Word...)
Cadier F. (ENST Bretagne) VBA 44 / 62
Le langage VBA crire des procdures
Dclaration et porte
[Private|Public] [Static] Function nom([listeargs])
[As type]
[instructions][nom = expression]
[Exit Function]
[instructions][nom = expression]
End Function
Private Visible uniquement dans le module de dclaration.
Public (par dfaut) Visible dans lintgralit du classeur.
Static Toutes les variables de la procdure seront Static
nom Cf. rgles de nommage des variables.
listeargs Liste des paramtres passs la procdure.
type Prcise le type de la donne retourne.
Cadier F. (ENST Bretagne) VBA 45 / 62
Le langage VBA crire des procdures
Excution (1/2)
... partir du VBE:
Fentre Excution Permet lexcution de commandes VBA...
... partir dune autre procdure :
Appel direct
[variable =] [[projet.]module.]proc (listeargs)
Mthode Application.Run
[variable =] Run("[[projet.]module.]proc", listeargs)
[variable =] Run("[classeur.xls!]proc", listeargs)
Cadier F. (ENST Bretagne) VBA 46 / 62
Le langage VBA crire des procdures
Excution... (2/2)
... partir dune formule dans Excel :
=mes_fonctions.xls!nom_proc(listeargs)
=nom_proc(listeargs) si le classeur est "rfrenc" ou si il a t enregistr
en tant que macro complmentaire.
Notes : Pour trouver une fonction, on peut utiliser Insertion>Fonctions...
Cadier F. (ENST Bretagne) VBA 47 / 62
Le langage VBA crire des procdures
Valeur de retour
Une seul donne peut tre retourne par une fonction : variable locale portant le
nom de la fonction
Nanmoins, celle-ci peut tre un tableau. Pour cela, la fonction doit renvoy un
type variant, et construire sa valeur de retour laide de la fonction Array.
Exemple :
Function NomsMois()
NomsMois = Array("Janvier", "Fvrier", "Mars", _
"Avril", "Mai", "Juin", "Juillet", "Aot", _
"Septembre", "Octobre", "Novembre", "Dcembre")
End Function
Cadier F. (ENST Bretagne) VBA 48 / 62
UserForm
Plan de la prsentation
1 Excel et VBA
2 Bases et Concepts
3 Le langage VBA
4 UserForm
Cadier F. (ENST Bretagne) VBA 49 / 62
UserForm Cration
Cration dun User Form
Depuis le VBE: insrer un module de type UserForm...
Puis insrer des contrles...
Cadier F. (ENST Bretagne) VBA 50 / 62
UserForm Contrles
Contrles dun User Form 1/3
Label Intitul :
Pour linsertion de texte dans la bote de dialogue.
TextBox Zone de texte :
Permet lutilisateur de saisir des donnes.
CheckBox Case cocher :
Permet un choix binaire.
ListBox Zone de liste :
Ache une liste dlments dans laquelle lutilisateur peut oprer
des slections.
ComboBox Liste droulante :
Semblable une ListBox, mais nache quun seul lment, et
permet lutilisateur de saisir de nouvelles donnes.
Cadier F. (ENST Bretagne) VBA 51 / 62
UserForm Contrles
Contrles dun User Form 2/3
CommandButton Bouton de commande :
Permet lexcution de... commandes.
ToggleButton Bouton bascule :
Un bouton de ce type a deux tats : activ (aspect enfonc) et
dsactiv.
OptionButton Bouton doption:
Une fois group avec dautres boutons doptions, il est utile pour
slectionner une option parmi plusieurs.
SpinButton Toupie :
Permet de slectionner une valeur laide de 2 ches : une pour
laugmenter, lautre pour la diminuer.
ScrollBar Barre de dlement :
Semblable un SpinButton, mais lutilisateur peut dplacer le
bouton de dlement an de modier la valeur.
Cadier F. (ENST Bretagne) VBA 52 / 62
UserForm Contrles
Contrles dun User Form 3/3
Frame Cadre :
Permet le regroupement dautres contrles.
Image : Ces images seront intgres au chier Excel.
Multipage : Cre une srie donglets pouvant intgrer dautres contrles.
TabStrip Contrle onglet :
Semblable Multipage... en moins utilisable !!
RefEdit : Ore lutilisateur la possibilit de slectionner une plage de
cellule.
Cadier F. (ENST Bretagne) VBA 53 / 62
UserForm Cycle de vie
Gestion dun User Form
1. Charger le UserForm en mmoire (facultatif) :
Load nom_user_form
2. Acher le UserForm:
nom_user_form.Show [0]
0 : achage non modal
3. Masquer le UserForm (facultatif) :
nom_user_form.Hide
4. Dcharger le UserForm de la mmoire :
Unload nom_user_form
Cadier F. (ENST Bretagne) VBA 54 / 62
UserForm vnements
Les vnements dun User Form
Initialize Survient avant que le User Form ne soit charg ou ach.
Activate Survient lorsque le User Form est activ.
Deactivate Survient lorsque le User Form est dsactiv.
QueryClose Survient avant que le User Form soit dcharg.
Terminate Survient aprs que le User Form a t dcharg.
Notes :
Load dclenche Initialize
Show dclenche Initialize et Activate (dans cet ordre)
Hide ne dclenche aucun vnement
Unload dclenche QueryClose et Terminate (dans cet ordre)
Cadier F. (ENST Bretagne) VBA 55 / 62
UserForm Solutions alternatives
InputBox 1/2
InputBox (du VBA) :
InputBox(prompt[,title][,default] _
[,xpos][,ypos][,helpfile,context])
prompt Le texte de la bote de dialogue.
title Le titre de la bote de dialogue.
default Chane de caractres contenant la valeur par dfaut.
xpos, ypos Les coordonnes du coin suprieur gauche.
helple, context Le chier daide et le sujet associ.
Cadier F. (ENST Bretagne) VBA 56 / 62
UserForm Solutions alternatives
InputBox 2/2
InputBox (dExcel) :
Application.InputBox(prompt[,title][,default] _
[,left][,top][,helpfile,helpContextID][,type])
prompt Le texte de la bote de dialogue.
title Le titre de la bote de dialogue.
default Chane de caractres contenant la valeur par dfaut.
left, top Les coordonnes du coin suprieur gauche.
helple, helpContextID Le chier daide et le sujet associ.
type Le type de la donne attendue.
Cadier F. (ENST Bretagne) VBA 57 / 62
UserForm Solutions alternatives
MsgBox
MsgBox (du VBA) :
MsgBox(prompt[,buttons][,title][,helpfile,context])
prompt Le texte de la bote de dialogue.
buttons Ensemble de boutons et dicnes de la bote de dialogue.
title Le titre de la bote de dialogue.
helple, helpContextID Le chier daide et le sujet associ.
Cadier F. (ENST Bretagne) VBA 58 / 62
UserForm Solutions alternatives
GetOpenFilename 1/2
GetOpenFilename (dExcel) :
Application.GetOpenFilename([FileFilter] _
[,FilterIndex][,title][,ButtonText][,MultiSelect])
FileFilter Chane spciant les critres de ltrage.
FilterIndex Index du critre de ltrage par dfaut.
title Le titre de la bote de dialogue ( Ouvrir par dfaut).
ButtonText Pour Macintosh uniquement !
MultiSelect Boolen spciant si plusieurs chiers peuvent tre slectionns.
Cadier F. (ENST Bretagne) VBA 59 / 62
UserForm Solutions alternatives
GetOpenFilename 2/2
Exemple :
Sub openFileSrc()
Dim Filt As String
Dim IndexFiltre As Integer
Dim NomFichier As Variant
Filt = "Fichiers C (*.c),*.c," & _
"Tous les fichiers (*.*),*.*"
NomFichier = Application.GetOpenFilename( _
FileFilter:=Filt, FilterIndex:=2, _
Title:="Slectionner un fichier source")
If NomFichier <> False Then MsgBox NomFichier
End Sub
Cadier F. (ENST Bretagne) VBA 60 / 62
UserForm Solutions alternatives
GetSaveAsFilename
GetSaveAsFilename (dExcel) :
Application.GetSaveAsFilename([InitialFilename] _
[,FileFilter][,FilterIndex][,title][,ButtonText])
InitialFilename Le nom de chier suggr (le nom du classeur par dfaut).
FileFilter Chane spciant les critres de ltrage.
FilterIndex Index du critre de ltrage par dfaut.
title Le titre de la bote de dialogue ( Sauvegarder sous par dfaut).
ButtonText Pour Macintosh uniquement !
Cadier F. (ENST Bretagne) VBA 61 / 62
UserForm Solutions alternatives
Lobjet FileDialog
Introduit dans la version 2002 dExcel, il permet au choix de :
slectionner un chier,
slectionner un dossier,
douvrir un chier,
ou denregistrer un chier.
Exemple :
Sub selectionnerDossier()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Application.DefaultFilePath & "\"
.Title = "Slectionnez un emplacement"
.Show
If .SelectedItems.Count <> 0 Then _
MsgBox .SelectedItems(1)
End With
End Sub
Cadier F. (ENST Bretagne) VBA 62 / 62

Вам также может понравиться