+ All Categories
Home > Documents > VBA_Algo

VBA_Algo

Date post: 23-Nov-2015
Category:
Upload: nyankoye-apollinaire-loua
View: 10 times
Download: 0 times
Share this document with a friend
Popular Tags:
62
Visual Basic for Applications (sous Excel) Frédéric Cadier ENST Bretagne - Département LUSSI [email protected] Cadier F. (ENST Bretagne) VBA 1 / 62
Transcript
  • Visual Basic for Applications(sous Excel)

    Frdric Cadier

    ENST Bretagne - Dpartement LUSSI

    [email protected]

    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 IISuperCalc 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, puispour 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 dOffice 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 Office sont hautement programmables, notamment grce VBA,qui permet de manipuler leurs modles dobjets.Exemple : ExcelLes 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 diffrents graphismes dun graphique...

    Cadier F. (ENST Bretagne) VBA 8 / 62

  • Excel et VBA Les fichiers dExcel

    .xls Fichier classeur : ses feuilles, le code VBA....xlw Environnement : informations sur lespace de travail.xlt Fichier modle de classeur.xlb Fichier de configuration des barres doutils et des menus.xla Macro complmentaire : fonctions, barre doutils...

    HTML Peut servir de format natif depuis Excel 2000XML 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 dedonnes ;

    Cl en main :Lutilisateur est entirement guid dans son utilisation delapplication.

    Cadier F. (ENST Bretagne) VBA 10 / 62

  • Excel et VBA Un Peu de Mthode...

    Cycle de conception :1. Dterminer les besoins des utilisateurs,2. Planification du dveloppement :

    Structure du ou des fichier(s) Structure des donnes Type de linterface utilisateur Formules vs. code VBA Macro complmentaire ou fichier XLS Gestion des erreurs, des version dExcel, des problmes de performance, du

    niveau de scurit...3. Dveloppement4. Test de lapplication5. Protger lapplication et masquer les lments inutiles6. Distribuer lapplication7. 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 laprogrammation.

    Dabord uniquement interprt, ce langage volue, samliore et devientcompilable.

    En 1990, Microsoft introduit Visual Basic, puis le VBA en 1994 avec Office 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 effectuent des actions.

    Module Les modules VBA sont stocks dans les classeurs, et contiennentle code, et les procdures.

    Objet Ce sont les entits manipules par le langage. Les objets sontorganiss sous forme de hirarchies, possdent des proprits etdes mthodes.

    Collection Objet particulier contenant un ensemble dautres objets, tousidentiques.

    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 :Affiche lensemble des objets, de leurs mthodes et proprits.

    Proprits Contient lensemble des proprits statiques de lobjet en coursddition.

    Excution Excute des procdures et/ou du code VBA.Variables Locales :

    En cours de dboguage, liste lensemble des variables locales laprocdure en cours.

    Espions En cours de dboguage, permet de suivre lvolution duneslection 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 suitest ignor.

    On le signale laide dun apostrophe

    Exemple :Sub Test()

    La mthode ClearContents vide les cellules, mais ne supprime pas la mise en pageActiveCell.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 1er caractre doit tre alphabtique la casse nest pas prise en compte 254 caractres maximum

    Attention aux mots-cls rservs du langageExemple :Je_Suis_1_Variable = "hihi" est valideje_suis_1_variable est la mme variableNext = 132 nest pas valide

    Cadier F. (ENST Bretagne) VBA 21 / 62

  • Le langage VBA Variables

    DclarationOn 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 fin de la procdure

    constante : mot-cl Const dclaration de nimporte quel niveau ne peut tre modifie

    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 utiliserOption 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 chanede caractre au sein mme de sa dclaration :Exemple :Dim strText As String * 25

    Une variable de type Date contient des dates allant du 1er janvier 100 au 31dcembre 9999.Une valeur de type Date est spcifie 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, danslesquelles on spcifie ses dimensions.Exemple :Dim iTab() As Integer Tableau dynamiqueDim vTab(1 To 100) Tableau de variantDim strTab(12, 12) As String Tableau 2 dimensions

    Par dfaut, lindex de base est 0. Pour le forcer 1, on peut utiliserOption Base 1 en dbut de module.Pour laccs aux lments du tableau, on spcifie lindice de llment entreparenthses.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 aveclinstruction 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 > des lments

    Cadier F. (ENST Bretagne) VBA 26 / 62

  • Le langage VBA Variables

    Type de donne personnalis

    On peut dfinir ses propres types de donnes complexes (structures) laide dumot-cl Type.Exemple :Type InfoClient

    Entreprise As String * 25Contact As String * 15CodeRegion As IntegerVentes 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 simplifier lcriture lors de lamanipulation de variables dobjets.Exemple : Ceci...Selection.Font.Name = "Times New Roman"Selection.Font.FontStyle = "Bold Italic"Selection.Font.Size = 12Selection.Font.Underline = xlUnderlineStyleSingle ... est quivalent celaWith Selection.Font

    .Name = "Times New Roman"

    .FontStyle = "Bold Italic"

    .Size = 12

    .Underline = xlUnderlineStyleSingleEnd 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 leslments 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 WorkbookDim ws As Worksheet

    Parcours toutes les feuilles de tous les classeursFor Each wb In Application.Workbooks

    For Each ws In wb.Worksheets...

    Next wsNext wb

    Cadier F. (ENST Bretagne) VBA 30 / 62

  • Le langage VBA Contrle de flux

    Contrle de flux (1/6)

    Linstruction GoTo permet de transfrer lexcution du programme vers uneetiquette (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 IfMsgBox "Je le savais !!"

    mauvaiseReponse:End Sub

    Cadier F. (ENST Bretagne) VBA 31 / 62

  • Le langage VBA Contrle de flux

    Contrle de flux (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 flux

    Contrle de flux (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 flux

    Contrle de flux (4/6)

    La boucle For Next excute une srie dinstructions sur une plage de valeursentires.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 flux

    Contrle de flux (5/6)

    La boucle Do While excute une srie dinstructions tant quune condition estvrifie.Syntaxes :Do [While condition]

    [instructions][Exit Do][instructions]

    LoopouDo

    [instructions][Exit Do][instructions]

    Loop [While condition]

    Cadier F. (ENST Bretagne) VBA 35 / 62

  • Le langage VBA Contrle de flux

    Contrle de flux (6/6)

    La boucle Do Until excute une srie dinstructions tant quune condition nestpas vrifie.Syntaxes :Do [Until condition]

    [instructions][Exit Do][instructions]

    LoopouDo

    [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 revanchedinteragir 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 Staticnom 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 dfini partir de la bote

    de dialogue Macro (Alt+F8).Bouton/Menu On peut affecter 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 spcifier une liste de paramtres de longueur nonprdtermin, 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 enargument.

    Passage par valeur Une copie de la donne est passe en argument : largumentdoit tre dclar avec le mot cl ByVal.

    Note : Une variable dfinie laide dun type personnalis ne peut pas tre passepar 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 seretrouve 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 dansdes 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 Staticnom 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 lenom de la fonction

    Nanmoins, celle-ci peut tre un tableau. Pour cela, la fonction doit renvoy untype 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 :Affiche une liste dlments dans laquelle lutilisateur peut oprerdes slections.

    ComboBox Liste droulante :Semblable une ListBox, mais naffiche quun seul lment, etpermet 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) etdsactiv.

    OptionButton Bouton doption :Une fois group avec dautres boutons doptions, il est utile pourslectionner une option parmi plusieurs.

    SpinButton Toupie :Permet de slectionner une valeur laide de 2 flches : une pourlaugmenter, lautre pour la diminuer.

    ScrollBar Barre de dfilement :Semblable un SpinButton, mais lutilisateur peut dplacer lebouton de dfilement afin de modifier 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 fichier Excel.Multipage : Cre une srie donglets pouvant intgrer dautres contrles.TabStrip Contrle onglet :

    Semblable Multipage... en moins utilisable !!RefEdit : Offre 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. Afficher le UserForm :nom_user_form.Show [0]0 : affichage 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 affich.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.

    helpfile, context Le fichier 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.

    helpfile, helpContextID Le fichier 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.helpfile, helpContextID Le fichier 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 spcifiant les critres de filtrage.FilterIndex Index du critre de filtrage par dfaut.

    title Le titre de la bote de dialogue ( Ouvrir par dfaut).ButtonText Pour Macintosh uniquement !MultiSelect Boolen spcifiant si plusieurs fichiers peuvent tre slectionns.

    Cadier F. (ENST Bretagne) VBA 59 / 62

  • UserForm Solutions alternatives

    GetOpenFilename 2/2

    Exemple :Sub openFileSrc()

    Dim Filt As StringDim IndexFiltre As IntegerDim 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 NomFichierEnd 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 fichier suggr (le nom du classeur par dfaut).FileFilter Chane spcifiant les critres de filtrage.

    FilterIndex Index du critre de filtrage 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 fichier, slectionner un dossier, douvrir un fichier, ou denregistrer un fichier.

    Exemple :Sub selectionnerDossier()

    With Application.FileDialog(msoFileDialogFolderPicker).InitialFileName = Application.DefaultFilePath & "\".Title = "Slectionnez un emplacement".ShowIf .SelectedItems.Count 0 Then _

    MsgBox .SelectedItems(1)End With

    End Sub

    Cadier F. (ENST Bretagne) VBA 62 / 62

    Excel et VBABref Historique des Tableurs...ExcelLes fichiers d'ExcelUn Peu de Mthode...

    Bases et ConceptsD'o vient le VBA ?Notions fondamentales du VBARetour sur le Modle d'Objets d'ExcelLe VBE (Visual Basic Editor)crire du code

    Le langage VBACommentairesVariablesManipulation d'objets et de collectionsContrle de fluxcrire des procdures

    UserFormCrationContrlesCycle de vievnementsSolutions alternatives