Formation VBA 3 Interagir



Documents pareils
Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Visual Basic for Applications

PROGRAMMATION EVENEMENTIELLE sur EXCEL

FORMATION au VBA Pour EXCEL. Version 2007 & +

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Guide de formation avec cas pratiques. Programmation. Philippe Moreau Patrick Morié. Daniel-Jean David

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Initiation à VBA pour Excel. Philippe Bernard Ingénierie Economique et Financière Université Paris-Dauphine

Programmation VBA. Excel Daniel-Jean David. et Groupe Eyrolles, 2014, ISBN :

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Algorithmique et programmation : les bases (VBA) Corrigé

TBI-DIRECT. Bridgit. Pour le partage de votre bureau. Écrit par : TBI Direct.

Le cas «BOURSE» annexe

MEDIAplus elearning. version 6.6

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Page Paragraphe Modification Mise en page du document Le bouton "Format de page" est maintenant "Page"

Le cas «BOURSE» annexe

AFTEC SIO 2. Christophe BOUTHIER Page 1

Activité 11 : Nuage de points ou diagramme de dispersion

Utilisation de l'outil «Open Office TEXTE»

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Comment autoriser un programme à communiquer avec Internet sous Vista?

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

L ORDINATEUR FACILE D ACCÈS!

Module SMS pour Microsoft Outlook MD et Outlook MD Express. Guide d'aide. Guide d'aide du module SMS de Rogers Page 1 sur 40 Tous droits réservés

Alfresco Guide Utilisateur

Comment faire des étiquettes

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

Application 1- VBA : Test de comportements d'investissements

Access 2007 FF Access FR FR Base

Guide d'installation sous Windows

Mon aide mémoire traitement de texte (Microsoft Word)

Cadastre du bruit SIT-JURA. Connecteur Arcview9.x - MSAccess. Mode d emploi. Appel formulaire. Page 1 sur 15

Guide d usage pour Word 2007

NAS 106 Utiliser le NAS avec Microsoft Windows

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Création d'une interface graphique

TABLEAU CROISE DYNAMIQUE

INITIATION A EXCEL Année

Formation. Module WEB 4.1. Support de cours

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

GESTION DE L'ORDINATEUR

WHS ProRealTime. édition

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

1 TD 2 : Construction d'une chier Acrobat et envoi par

Assistance à distance sous Windows

IUT BREST UN LOGICIEL SCADA : PC VUE 2010 DEP.GMP

L espace de travail de Photoshop

Comment accéder à d Internet Explorer

I Pourquoi une messagerie?

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Inspiration 7.5. Brève description d Inspiration. Avantages d Inspiration. Inconvénients d Inspiration

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Swyx Skin Editor - Guide de l'utilisateur. SwyxIt Skin Editor L éditeur de création des habillages individuels

Les nouveautés de Ciel Comptes personnels

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Corrigé de l'atelier pratique du module 3 : Récupération d'urgence

Excel 2010 Intermediaire

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz mqwertyuiopasdfghjklzxcvbnmqwert

Guide d'utilisation de l'accès Web SAP BusinessObjects Financial Consolidation

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

INTRODUCTION GENERALE...1 LA CONNEXION ODBC :...1. CONNEXION AU TRAVERS D EXCEL(tm)...6. LOGICIEL QUANTUM GIS (Qgis)... 10

Comment sauvegarder ses documents

Service client LSC 1

Calc 2 Avancé. OpenOffice.org. Guide de formation avec exercices et cas pratiques. Philippe Moreau

:...2 I.6. :... 2 I.7. :... 2 I.8. :...3 I.9. :... 3 I.10. :... 3 II. 4 II.1.

Guide d'installation du connecteur Outlook 4

LE TABLEUR OPENOFFICE CALC : CONTRÔLES DE FORMULAIRES ACCÈS AUX BASES DE DONNÉES

l'ordinateur les bases

37 13 Courrier indésirable Appeler plusieurs comptes de messagerie Sélectionner un compte de messagerie

Gestion de projets. avec. Microsoft Office PROJECT 2003

UTILISATION DE L'APPLICATION «PARTAGE DE FICHIERS EN LIGNE»

NAS 206 Utiliser le NAS avec Windows Active Directory

FICHE 17 : CREER UN SITE WEB

INTRODUCTION AU CMS MODX

Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

Modem LG LDU-1900D. Guide d utilisateur. LG Electronics

- Université Paris V - UFR de Psychologie ASDP4 Info Introduction à Windows

GUIDE DE DEMARRAGE RAPIDE:

Créer votre propre modèle

1. Utilisation du logiciel Keepass

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Utilisation du logiciel Epson Easy Interactive Tools

Le langage C. Séance n 4

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

Java 7 Les fondamentaux du langage Java

Utiliser une base de données

Publication Assistée par Ordinateur

Transcription:

Formation VBA 3 Interagir 1

Utilisation des UserForms Les UserForms sont des interfaces largement configurables, il convient de ne pas les limiter à tel ou tel usage qui pourrait être présenté à titre d'exemple. 2

Utilisation des UserForms (2) Programmation évenementielle Possibilité de contrôles des données Possibilités de modification dynamique des UserForms. Possibilité de manipulation de l'ensemble de l'interface via les UserForms => Possibilités considérables. 3

Contenu 1) Création et dessins des UserForms 2) Comportement des UserForms Affichage des UserForms Comportement des UserForms : écriture du code associé Intégration dans la hiérarchie et manipulation des widgets 3) Boîte de dialogue : d'autres widgets mais pré-implémentés 4) Programmation évenementielle Aspects théoriques Exemples d'implémentation Développement de quelques éléments de la hiérarchie 4

Création et dessins des UserForms Les userforms sont des interfaces qu'il est possible de construire à partir d'une boîte d'outils de base. La création d'un UserForm, clic droit dans l'explorateur de projet : 5

Dessins sur un UserForm Les userforms sont des interfaces qu'il est possible de construire à partir d'une boîte d'outils de base. Espace de dessin Elements de construction de l'interface / widget Propriété de l'objet UserForm 6

Dessins sur un UserForm - bouton Bouton : 1- Selection du widget-bouton 2- Dessin du widget bouton 7

Différents Widgets (ou controles) Zone de texte Label Checkbox Bouton Radio Image 8

Contenu 1) Création et dessins des UserForms 2) Comportement des UserForms Affichage des UserForms Comportement des UserForms : écriture du code associé Intégration dans la hiérarchie et manipulation des widgets 3) Boîte de dialogue : d'autres widgets mais pré-implémentés 4) Programmation évenementielle Aspects théoriques Exemples d'implémentation Développement de quelques éléments de la hiérarchie 9

Affichage des UserForms La création d'un UserForm ajoute un objet dans la hiérarchie. L'affichage est une procédure associée. En première approche, pour afficher le UserForm, on fait une procédure d'un module, d'un classeur ou d'une feuille de calcul. Soit par exemple le rajout d'un UserForm "UserForm1", son affichage : Sub main() UserForm1.show End Sub ou : Sub main() Call UserForm1.show() End Sub Dans ce qui suit, on verra une manière plus élegante d'afficher les UserForms (voir la partie sur la programmation évenementielle) 10

Comportement des UserForm : écriture du code associé A partir de la définition de l'userform dans VBE, on accède à une interface de définition du code via clic droit sur le UserForm - code OU BIEN : en cliquant deux fois sur l'un des widgets qui a été défini : dans ce cas, apparaît une procédure possible pour le widget. La forme des procédures sur la page associée au UserForm : nomobjet_evenementsurobjet(). Quelques exemples : Private Sub Frame1_Click() Private Sub CheckBox1_Click() Private Sub Label1_Click() Ces procédures sont déclarées private. Elles sont activées lors des actions de l'utilisateur sur l'interface. => PROGRAMMATION EVENEMENTIELLE 11

Comportement des UserForm : premiers tests On définit un UserForm avec un label qui sera automatiquement nommé Label1 du UserForm et une zone de texte qui sera automatiquement définie comme textbox1_change. En double cliquant les objets, on fait apparaître des procédures liées : Private Sub Label1_Click() MsgBox "Label1" End Sub Private Sub textbox1_change() MsgBox "textbox1" End Sub Il y a réaction et activation du code dès que l'utilisateur rentre une valeur dans le champ texte ou dès qu'il clique sur le label. 12

Comportement des UserForm : Pour chaque élément rajouté au widget : il dispose de propriétés et de procédures / fonctions associées. Les voir en cours de frappe pour Label1 dans l'exemple précédent par exemple (aide à la saisie de VBE). Pour chaque clic sur le label, on peut provoquer un changement de couleur en utilisant la propriété BackColor de Label1: Private Sub Label1_Click() Randomize Label1.BackColor = RGB(255 * Rnd, 255 * Rnd, 255 * Rnd) End Sub 13

Le userform est une hiérarchie d'objets En créant un UserForm, on crée un nouvel arbre d'objets : UserForm1 Label1 textbox1 Notamment, le chemin d'accès complet des objets-widgets du UserForm : UserForm1.Label1 UserForm1.textBox1 14

Le userform est une hiérarchie d'objets (2) Conséquences pour l'accès aux variables et aux procédures/fonctions Un exemple : Sub modifuf() UserForm1.Label1.BackColor = RGB(0, 0, 255) UserForm1.Show End Sub Cette instruction peut être spécifiée sur la page de code associée au userform ou sur un module autre 15

Le UserForm est lui même un objet d'une hiérarchie Application Workbooks VBE... ActiveVBProject VBComponents Créer un UserForm c'est rajouter une hiérarchie d'arbre dans un arbre. Cf la définition de l'arbre et le maintien des propriétés. 16

Manipulation des UserForms via le code (1) L'exécution des codes suivants nécessite l'activation de plusieurs librairies : Outils-References et activation de : Microsoft Visual Basic Édition Applications, Microsoft Forms 2.0 (le numéro ou le nom des bibliothèques peut être légérement différent en fonction de la version) Ajout automatique de UserForm : Sub test() Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_msform) End Sub 17

Manipulation des UserForms via le code (2) Sub Add_Form2() ' Declare a variable to hold the UserForm. Dim mynewform As Object ' Create a new UserForm. You can now use this new VBComponent object ' to manipulate the User Form. Set mynewform = Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_MSForm) With mynewform.properties("height") = 246.Properties("Width") = 616.Name = "HelloWord".Properties("Caption") = "This is a test" End With End Sub 18

Manipulation des UserForms via le code (3) Accès au projet : Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_MSForm) Accès et lancement de l'interface : Sub lancementusf() VBA.UserForms.Add("UserForm1").Show End Sub La différence est importante mais pas forcément à faire immédiatement. En première approche, on se contente de manipuler les UserForms via l'interface VBE. 19

Propriétés des UserForms Sur un UserForm : BackColor BorderColor Caption Forecolor Height Left MouseIcon MousePointer Picture ScrollBars StartUpPosition Tag Top Width Visible Spécifie la couleur de fond Spécifie la couleur de bordure Spécifie le texte affiché dans la barre de titre Définit la couleur de la police Définit la dimension verticale Définit la position par rapport au bord gauche de l'application Affecte un icône personnalisé Spécifie le type de pointeur Spécifie l'image de fond dans l'userform Indiquee si les barres de défilement verticales et horizontales doivent être affichées Indique la position du UserForm lors de sa première apparition Permet de stocker des informations supplémentaires Définit la position par rapport au bord supérieur de l'application Définit la dimension horizontale Spécifie si l'objet est masqué ou affiché. Différence entre la modification de l'interface dans Excel et la modification du projet. 20

Evolution des UserForms Le fait de saisir F5 lorsque le UserForm est selectionné ou de lancer une procédure du type : Private Sub CommandButton1_Click() UserForm1.Show End Sub conduisent à l'affichage du UserForm comme interface, bloquant l'accès aux menus standard ou empechant de saisir ou modifier du code dans l'interface VBE. L'userForm est dit modal. 21

Evolution des UserForms (2) Cacher un UserForm en conservant les modification, les valeurs pour les différents Widget, les modifications de couleurs sur l'interface etc... UserForm1.Hide Pour fermer l'userform en libérant les ressources associées et en perdant les valeurs courantes des champs textes etc... : unload UserForm1 22

Les évenements gérés par les UserForms La gestion des évenemens se fait Par la déclaration d'une procédure : private dans la feuille de code associée au userform. de la forme NomObjet_Evement Le code de la procédure sera lancé au moment de l'évenement. Par exemple : Private Sub UserForm_Initialize() UserForm2.BackColor = RGB(0, 0, 255) End Sub 23

Page de code / UserForm Accès en double-cliquant sur le userform Accès avec clic-droit sur le userform et code Les différents Widgets sont accessibles entre eux. Accessibilité de l'ensemble du modèle objet non déclaré Private. 24

Les différents widgets : checkboxes Les attributs/propriétés : BackColor Caption Font Height Locked Value Visible Couleur de fond derrière le texte Texte à côté Forme du texte à côté (police, taille...) Hauteur en pixels Le fait que la valeur est modifiable La valeur : {True (le widget est coché) /false} Le widget apparaît Les méthodes / propriétés : Move setfocus On fait bouger le widget au sein du UserForm Le widget est selectionné au sein du userform Comportement / évenements : Private Sub CheckBox1_Click() 25

Checkbox : un exemple (fichier usforms.xls) L'appel depuis un module : Sub userformquestionnaire() UserForm2.Label7.Visible = False UserForm2.TextBox4.Visible = False UserForm2.Show End Sub Le code associé à CheckBox1 : Private Sub CheckBox1_Click() If CheckaBox1.Value = True Then Label7.Visible = True TextBox4.Visible = True Else Label7.Visible = False TextBox4.Visible = False End If End Sub Pourquoi le Else dans l'instruction conditionnelle? Paramètres des fonctions Move ou setfocus? 26

Les différents widgets : bouton radio Les attributs/propriétés : BackColor Caption Cancel Font Height Locked Couleur de fond derrière le texte Texte à côté Le bouton peut être déselectionné Forme du texte à côté (police, taille...) Hauteur en pixels Le fait que la valeur est modifiable Value Visible Les méthodes / propriétés : La valeur : {True (le widget est coché) /false} Le widget apparaît Move setfocus On fait bouger le widget au sein du UserForm Le widget est selectionné au sein du userform Comportement / évenements : Private Sub OptionButton1_Click() 27

Exemple d'utilisation Spécifié tel quel le fichier usforms.xls présente une limite considérable : le fait de cliquer sur un bouton radio exclue de pouvoir cliquer sur un autre. Pour régler ce problème, on rattache les boutons radios par groupes : (G1 pour le genre et G2 pour la situation familiale par exemple) Modification directe des propriétés! La machine fait directement un contrôle : pourrait-on penser le type de contrôle qu'elle effectue. 28

Les différents widgets : textbox Les attributs/propriétés : BackColor Caption Cancel Font GroupName Height MaxLength Locked Value Visible Couleur de fond derrière le texte Texte à côté Le bouton peut être déselectionné Forme du texte à côté (police, taille...) Un attribut de type chaîne qui rattache le bouton à un groupe (voir l'exemple) Hauteur en pixels Le nombre de caractère maximal admis Le fait que la valeur est modifiable La valeur : {True (le widget est coché) /false} Le widget apparaît Les méthodes / propriétés : Copy Cut Move Paste setfocus Comportement / évenements : Private Sub TextBox1_Change() Copie le contenu dans le presse papier Elimine le contenu et le copie dans le presse papier On fait bouger le widget au sein du UserForm Colle le contenu du Presse Papier Le widget est selectionné au sein du userform 29

textbox : forcer un contenu numérique Comment forcer que l'utilisateur rentre un contenu numérique? Dans usforms.xls, on veut forcer un contenu numérique pour le champ recevant le revenu par exemple : Private Sub TextBox1_Change() If Not IsNumeric(TextBox1.Value) Then TextBox1.Value = Mid(TextBox1.Value, 1, Len(TextBox1.Value) - 1) End If End Sub 30

Contenu 1) Création et dessins des UserForms 2) Comportement des UserForms Affichage des UserForms Comportement des UserForms : écriture du code associé Intégration dans la hiérarchie et manipulation des widgets 3) Boîte de dialogue : d'autres widgets mais préimplémentés 4) Programmation évenementielle Aspects théoriques Exemples d'implémentation Développement de quelques éléments de la hiérarchie 31

Les widgets pré-implémentés Dans ce qui précède, on a constaté que les fonctions ou les procédures VBA permettent de manipuler les MsgBoxes et les boutons de commandes de manière automatique. L'affichage MsgBox tel que pratiqué jusqu'à maintenant, correspond à une fonction. L'instruction habituellement utilisée : MsgBox "Valeur de x " & x La création de bouton passe par une fonction qui renvoie une référence sur le bouton crée : ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1",_ Link:=False, DisplayAsIcon:=False, Left:=201.75, Top:=172.5, Width:=77.25,_ Height :=29.25) 32

Les widgets pré-implémentés : inputbox Note : à l'instar de la MsgBox, ou des UserForms, lorsque une InputBox est active, elle bloque l'accès aux menus et la saisie de code dans l'interface VBE. Les InputBoxes permettent une interaction plus riche que ne le permettent les MsgBoxes. Alors que l'appel à une MsgBox est l'appel d'une procédure, l'appel à une InputBox est un appel de fonction La forme générale de la création d'une Inputbox InputBox(Message,[Title],[Default],[xPos],[xPos]) As String Message est la chaine affichée dans la boîte de dialogue Title est le titre éventuel Default est la valeur par défaut dans le champ de saisie xpos : position de l'affichage au sein de la fenêtre ypos : position de l'affichage au sein de la fenêtre 33

inputbox : Quelques exemples d'utilisation Dans le cas des InputBox, on attend que l'utilisateur renvoie une réponse : Sub age() Dim str As String str = InputBox("Donnez votre age : ", "Age",, 10, 10) While (Not IsNumeric(str)) str = InputBox("Donnez une valeur numérique pour votre age : ", "Age",, 10, 10) Wend MsgBox "Age saisi : " & str End Sub 34

Les widgets pré-implémentés : MsgBox et forme plus générale La forme générale de l'utilisation des MsgBox : MsgBox (Message, [typebouton + typeicone], [titre]) As vbmsgboxresult TypeBouton renvoie à des possibilités d'organisation des boutons de réponse TypeIcone renvoie au type d'icone qui illustre la boîte Titre est le titre donné à la boîte. 35

Les widgets pré-implémentés : Quelques exemples Sub testmsg1() Dim str As String str = MsgBox("Voulez vous sauvegarder avant de quitter l'application?", vbyesno, "Sauvegarde?") End Sub Sub testmsg2() Dim retour As Integer, i As Integer For i = 0 To 100 retour = MsgBox("La boucle en est à sa " & i & "eme iteration, voulez vous suspendre?", _ vbyesno + vbcritical) If retour = 6 Then i = 10001 End If Next End Sub 36

Les valeurs possibles Les types d'ensemble de boutons possibles : La référence du type de bouton vbokonly vbokcancel vbabortretryignore vbyesnocancel vbyesno vbretrycancel vbokcancel La valeur associée OK Ok Annuler Abandonner Recommencer Ignorer Oui Non Annuler Oui Non Répeter Annuler Affichage bouton aide Les valeurs de retour et leurs équivalents en entier : Nom du bouton Valeur renvoyée lorsque cliqué vbok 1 vbcancel 2 vbabor 3 vbretry 4 vbignore 5 vbyes 6 vbno 7 37

Contenu 1) Création et dessins des UserForms 2) Comportement des UserForms Affichage des UserForms Comportement des UserForms : écriture du code associé Intégration dans la hiérarchie et manipulation des widgets 3) Boîte de dialogue : d'autres widgets mais pré-implémentés 4) Programmation évenementielle Aspects théoriques Exemples d'implémentation Développement de quelques éléments de la hiérarchie 38

4- Programmation évenementielle - Démarche Pour un certain nombre des éléments de la hiérarchie objet, il existe des comportements programmables et on peut en faire des écouteurs d'évements à l'instar de ce qui est fait pour les widgets des UserForms ou sur les UserForms. un classeur peut être manipulé : il peut être ouvert, fermé, dit autrement, l'ouverture et la fermeture sont des évenements pour le classeur... Le même schéma fonctionne que celui qui existe pour les widgets : un évenement est défini par le nom d'un objet, un underscore et le nom d'un évenmement, la syntaxe est la suivante : Workbook_open. Les conditions doivent être les mêmes : La procédure doit être déclarée private La procédure doit être saisie dans la feuille associée, par exemple, sur la feuille Workbook du projet pour que le comportement évenementiel soit pris en compte pour le classeur. Le comportement sera recherché automatiquement lors d'une opération. 39

4- Programmation évenementielle Un premier exemple Un exemple simple d'exécution à l'ouverture : Private Sub Workbook_Open() MsgBox "Bonjour " & Environ("UserName") End Sub Activation d'un UserForm dès l'ouverture d'un classeur : Private Sub Workbook_Open() End Sub userform1.show() 40

4- Programmation évenementielle VBE En allant sur la page associée au classeur Workbook : Liste des comportements Pour un objet donné, on ne peut pas définir plusieurs comportement pour le même évenement. Par contre, il n'y a pas de limite au nombre de procédures que peut appeler la fonction de réaction à un évenement : Sub Workbook_open() Call proc1() Call proc2() End Sub 41

4- Programmation évenementielle - Workbook Quelques évenements pour Workbook : BeforeClose : effectué avant la fermeture du classeur BeforeSave : effectué avant la sauvegarde : par exemple, vérification de la cohérence des données, interdiction de sauvegarde si certaines données ne sont pas cohérentes. Open : comportement à l'ouverture du classeur. NewSheet : appel de ce comportement au moment du rajout d'une nouvelle feuille. Les fonctions qu'il est possible de décrire : Private Sub Workbook_BeforeClose Private Sub Workbook_BeforeSave Private Sub Workbook_Open 42 Private Sub Workbook_NewSheet

4- Programmation évenementielle - Worksheet Quelques évenements pour Worksheet : Activate : effectuée lorsque la Worksheet est activée Desactivate : effectuée lorssque la Worksheet est désactivée 43

CONCLUSION Pour chaque objet de la hiérarchie : il a des propriétés il a des méthodes il est éventuellement possible de définir un comportement de réaction aux évenement. Construction d'interfaces évenementielles. Intégrer des userforms c'est développer l'arbre de la hiérarchie des objets et personnaliser l'interface et les possibiltés de la programmation évenementielle. Ensemble de possibilité considérables à très faible coût Par rapport aux autres modèles évenementiels? 44