PROGRAMMATION EVENEMENTIELLE sur EXCEL

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

Formation VBA 3 Interagir

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

FORMATION au VBA Pour EXCEL. Version 2007 & +

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

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

Parcours FOAD Formation EXCEL 2010

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

.NET - Classe de Log

Visual Basic for Applications

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Edutab. gestion centralisée de tablettes Android

TD3 - Facturation avec archivage automatisé

Utilisation de l éditeur.

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

GUIDE Excel (version débutante) Version 2013

OneDrive, le cloud de Microsoft

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

CATALOGUE DES FORMATIONS

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

Centre de formation: Collège IBN BASSAM - TEMARA. Ce cours est proposé par le professeur d informatique:

Cours Excel : les bases (bases, texte)

Initiation à LabView : Les exemples d applications :

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

Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

Introduction à Expression Web 2

BML Informatique Tableur OpenOffice.org Calc Mercredi 8 avril 2015

Mode Opératoire Windows XP

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

Note de cours. Introduction à Excel 2007

SOMMAIRE 1 INTRODUCTION 3 2 CONTACTER VOTRE SUPPORT 3 3 ESPACE DE GESTION DES CARTES 4 4 CONFIGURER UNE CARTE 5

Excel 2007 Niveau 3 Page 1

TABLEAU CROISE DYNAMIQUE

Listes de validation dans OpenOffice Calc

Comment créer et utiliser une fonction

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

Auto formation à Zelio logic

Tutoriel Prise en Main de la Plateforme MetaTrader 4. Mise à jour : 7/09/

Création d'une interface graphique

Logiciel PICAXE Programming Editor

Alcatel OmniPCX Office

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

gestion des processus La gestion des processus

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

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

italc supervision de salle

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

F0RMAT I0N BUREAUTIQUE

Le meilleur de l'open source dans votre cyber cafe

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

Tutorial Cobian Backup

Fiche n 14 : Import / Export avec PlanningPME

Débuter avec Excel. Excel

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Stockez et organisez vos données sous Excel. Une approche systématique, structurée et simplifiée

Access. Apprenez exactement ce dont vous avez besoin Progressez à votre rythme Téléchargez les exercices. Joyce Cox et Joan Lambert

Centrale de surveillance ALS 04

Mises à jour CELCAT depuis la version 6.4

L accès à distance du serveur

NOS FORMATIONS EN BUREAUTIQUE

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

L environnement de travail de Windows 8

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

Programme d Accès Communautaire / Atelier 4 Initiation à Microsoft Excel PLAN DE COURS 3 MICROSOFT EXCEL 4 LANCER EXCEL 4

Dollar Universe v5.1 Laissez-vous guider sur Motif

REALISATION d'un. ORDONNANCEUR à ECHEANCES

TalkToMe : votre première appli App Inventor Ce tutoriel vous aidera à construire une appli parlante qui peut sauvegarder des phrases sur demande.

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

Guide pour sécuriser votre PC avec Kiosk Internet et Windows Seven

TUTORIAL REUTERS. Utilisation de l'utilitaire de recherche Reuters

FORMATION EXCEL 2010 Groupe LUCAS LOGICIA

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Premier cours d informatique

Visual Basic.NET Interaction avec Excel

Cours de Génie Logiciel

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

Gestion de projets. avec. Microsoft Office PROJECT 2003

Projet Active Object

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE MINISTERE DE LA FORMATION PROFESSIONNELLE. Microsoft. Excel XP

Tutoriel : logiciel de présentation Openoffice Impress

COURS DE MS EXCEL 2010

manuellement. Le prototype ayant obtenu des résultats satisfaisants aux différents essais de labour est validé sur le plan suivant :

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

CAPTURE DES PROFESSIONNELS

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

Trier les ventes (sales order) avec Vtiger CRM

EXCEL TUTORIEL 2012/2013

Le cas «BOURSE» annexe

Tutoriaux : Faites vos premiers pas avec Microsoft Visio 2010

Introduction à Business Objects. J. Akoka I. Wattiau

Access 2007 FF Access FR FR Base

MEGA Web Front-End Installation Guide MEGA HOPEX V1R1 FR. Révisé le : 5 novembre 2013 Créé le : 31 octobre Auteur : Noé LAVALLEE

Table des matières. F. Saint-Germain / S. Carasco Document réalisé avec OpenOffice.org Page 1/13

D-ViewCam V3.0 Video Management System

Transcription:

MASTERs SMaRT & GSI PROGRAMMATION EVENEMENTIELLE sur EXCEL Pierre BONNET

Programmation évènementielle La programmation évènementielle permet un appel de procédure depuis l'interface HMI d'excel (ou d'un User Form) Retour à l'exploitation classique d'excel Attention: le nom de la procédure évènementielle est imposé par l'objet source en MsOffice 46

Programmation événementielle: Evénement [front montant] Retour de tâche événementielle 47

Programmation événementielle sur front: Conditions événementielles Diagramme de commande Attente appel Trait Event Fin Trait événement masquage Evénement t Tâche événementielle active active active t Tâche principale active suspendue active suspendue... t 48

Programmation événementielle: blocage temporaire par la tâche évènementielle Le retour à la fenêtre de présentation Excel se faite à la fin de la boucle. Aucune activité apparente sur la fenêtre: le compteur reste à la valeur 0; le bouton "Start" reste enfoncé; le bouton "Stop" reste enfoncé un clic sur "Stop" est pris en compte par le gestionnaire d'événements de l'interface graphique (Windows).et transmis au gestionnaire d'événements de l'application (Excel). Cet événement est mis en pile dans le gestionnaire de l'appli et n'est traité qu'après la fin de traitement de l'événement précédent. 49

Programmation événementielle: Les performances de l'application seront donc liées à la qualité de la programmation des tâches Blocage Blocagetemporaire définitif de l'application dans la tache dans la fin tâche sans événementielle 50

Programmation événementielle: Retour feuille Excel Gestionnaire d'événements Appel forcé au gestionnaire d'événements: l'événement suivant dans la pile est traité 51

Programmation événementielle: principe Excel,VB C++... Explorer Chaque application possède son propre gestionnaire d'évènement Gestionnaire de fenêtres graphiques Bureau Evènements Messages Système d'exploitation ordonnanceur Timers Interruptions matérielles (cartes...) Interruptions HMI E/S Horloge 53

Programmation événementielle: principe Structure d'une application Pile d'événements Fifo Retour fonction Évènements venants d'applications externes (sources) Appel Fonction Fonctions événementielles Gestionnaire d'événements les événements sont traités dans l'ordre d'apparition accès à la gestion de pile [écrasement volontaire]? Modification de l'ordre des événements dans la pile? Appels multiples d'un même événement? 54

Programmation événementielle: exercice 4 Boutons de commande industriels On désire présenter un composant Excel de supervision représentant une commande Arrêt/Marche à deux boutons commandant une variable booléenne : - lors de l'appui sur "Marche", le bouton devient inactif,enfoncé, texte en vert foncé normal, le bouton "Arrêt" devient actif, relâché texte rouge clair gras - lors de l'appui sur "Arrêt", le bouton devient inactif,enfoncé, texte en rouge foncé normal, le bouton "Marche" devient actif, relâché texte vert clair gras - la variable booléenne est visualisée par une cellule dont le texte et la couleur sont en concordance avec l'état des boutons. Veiller à définir l'état initial des composants à l'ouverture d'excel (bouton d'initialisation ou mieux événement ouverture classeur) 55

Événements Classeur Ouverture classeur Private Sub Workbook_Open() Call MaProdedure End Sub Fermeture classeur Private Sub Workbook_BeforeClose(Cancel As Boolean) Redimensionnement fenêtre classeur Private Sub Workbook_WindowResize(ByVal Wn As Window) 56

Événements Feuille Activation/désactivation Feuille Sub WorkSheet_Activate() Sub WorkSheet_Deactivate() Changement de valeur sur feuille Sub WorkSheet_Change(ByVal Target As Range) [Target représente la plage modifiée, elle peut contenir plusieurs cellules. ] Attention : si la procédure événementielle modifie elle-même des contenus de cellule, il y aura récursivité de l'événement. Dans une telle application, il est nécessaire de bloquer [masquer] les événements par Application.EnableEvents = False avant de modifier les contenus, puis de débloquer les événements par Application.EnableEvents = True voir http://www.cpearson.com/excel/events.aspx Changement de sélection sur la feuille Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) [Target représente la nouvelle plage sélectionnée] 57

Evènements Création d'une nouvelle procédure évènementielle Se placer dans le module "Classeur" ( ThisWorkbook ), insérer le code suivant : Public WithEvents Mon_Appli As Application Private Sub Workbook_Open() Set Mon_Appli = Application End Sub L'application "Mon_Appli" dispose maintenant de propriétés évènementielles associées à certains éléments du projet (classeur, feuilles...), tout comme une feuille, un classeur ou un module. La liste des évènements disponibles (onglet en haut de droite) est consultable après avoir sélectionné l'application (onglet en haut à gauche) 58

Insertion d'autres contrôles ActiveX Les contrôles activex sont des composants externes écrits conformément aux règles COM (Component Objet Model); ces composants possèdent des propriétés, exposent des méthodes et génèrent des évènements. Pour être utilisable dans une application, ces composants doivent être enregistrés dans la base de registre (regserv32.exe). Un composant ActiveX s'exécute dans l'espace mémoire de l'application principale appelée conteneur. Un composant ActiveX comprend des propriétés, des méthodes et des événements. Exemple : calendrier Calendar Microsoft 59

Contrôle du temps d'exécution d'une application Lecture de l'heure et évaluation d'une durée L'heure courante est directement accessible sous Excel/VBA par la fonction Now Le format est celui d'un flottant double précision avec : - partie entière = nombre de jours depuis 1900 - partie fractionnaire = fraction de jour (1h = 1/24 de jour, 1mn = 1/(24x60) de jour, 1s =1/(24x60x60) de jour ) Les calculs peuvent se faire directement avec les dates/heures par simple addition ou soustraction: Heure_Depart = Now Calculs... Heure_Fin = Now Duree = Heure_Fin - Heure_Depart Il existe de nombreuses fonctions de manipulation des date/ heure qui facilitent l'expression des calculs ou des résultats 60

Contrôle du temps d'exécution d'une application Gestion du temps par méthode d'attente Sub Attente() Dim Fin_Tempo [as Variant] Fin_Tempo = Now + TimeSerial(0, 0, Duree_attente_s ) Application.Wait Fin_Tempo MsgBox "Attente terminée" End Sub La méthode Wait permet de faire intervenir la notion de temps dans l'exécution d'une fonction L'attente est blocante pour la TOTALITE de l'application Excel 61

Contrôle du temps d'exécution d'une application Méthode fondamentale pour une gestion multitâche non-blocante Heure_Execution = Now + TimeSerial(0, 0, Duree_attente ) Application.OnTime Heure_Execution, "Procédure_a_executer" [ la procédure <macro> doit être écrite dans un "module" pour être accessible au système d'exploitation] La méthode événementielle OnTime permet de disposer d'une gestion multitâche par appel de fonctions depuis le système d'exploitation. La gestion de l'événement est externe à l'application Excel La tâche s'exécute même en cas de fermeture du classeur (réouverture du classeur sous réserve qu'une instance d'excel soit ouverte) 62

Contrôle du temps d'exécution d'une application Principe de fonctionnement de la méthode OnTime Enregistrement de la demande d'événement auprès du système d'exploitation [NT/XP] Poursuite de l'exécution de la tâche appelante Appel de la tâche temporisée par le système d'exploitation Attention: La tâche appelée doit être désignée par son nom complet pour être visible depuis Windows La méthode OnTime n'est pas bloquante car elle est gérée par le système d'exploitation 63

Contrôle du temps d'exécution d'une application Tâche cyclique Enregistrement de la demande d'événement au système d' exploitation [NT/XP] Poursuite de l'exécution de la tâche appelante Rappel de la tâche cyclique par le système d'exploitation La temporisation est relancée sur elle-même et crée une tâche cyclique. L'arrêt de la tâche cyclique ne peut se faire que par son enregistrement avec le paramètre de "Schedule" à False, ce qui la supprime de la liste des évènements. 64

Contrôle du temps d'exécution d'une application Tâche cyclique Des erreurs sont souvent constatées dans le fonctionnement de l'exemple de la page précédente : - l'activité s'exécute deux fois (voire plus) pour une périodicité donnée - la périodicité de la Tâche cyclique apparaît comme fausse (période diminuée) Explications : après le lancement initial de la tâche cyclique, son fonctionnement n'est plus contrôlé par Excel mais par le système d'exploitation. tout lancement supplémentaire de la tâche cyclique (par le menu "macro" ou par programmation) génère une nouvelle instanciation. Les instanciations multiples fonctionnent en boucles imbriquées : les instants de déclenchements peuvent être identiques (activité évènementielle répétée plusieurs fois au même instant) ou décalés (activité relancée au cours d'une période de base) 65

Contrôle du temps d'exécution d'une application Exercice 5 : clignoteur On désire réaliser un clignoteur basé sur une temporisation cyclique de 1s. La temporisation sera lancée par un poussoir "marche" et arrêtée par un poussoir "arrêt" Lorsque l'arrêt est effectif, le clignoteur sera éteint. Faire ensuite un clignoteur dont la durée à l'état allumé est 2s et la durée à l'état éteint 1s (utiliser deux tâches s'appelant mutuellement) Propositions pour fiabiliser l'application : a) utiliser une variable booléenne tempo_en_marche qui sera testée pour éviter le relancement de la tempo b) utiliser la propriété schedule = false de la méthode Application.OnTime pour l'arrêt du clignoteur. 66

Contrôle du temps d'exécution d'une application Timer VB Sous VB6, l'utilisateur dispose de Timer ajustable de 1 ms à 65s. Sa programmation est très simple (non disponible sous VBA) Timer Windows Le système d'exploitation Windows propose une fonction de type timer dans la librairie user32.dll. Elle permet de fixer une durée la durée (ou période ) à 1 ms près. Les éléments de programmation sont : définition de la fonction évènementielle lancement du timer avec passage du pointeur de la fonction évènementielle arrêt du timer par la fonction killtimer 67

Contrôle du temps d'exécution d'une application Timer système de la librairie user32 Option Explicit Dim Compteur As Integer Declare Function SetTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nidevent As Long, _ ByVal uelapse As Long, _ ByVal lptimerfunc As Long) As Long Declare Function KillTimer Lib "user32" _ (ByVal hwnd As Long, _ ByVal nidevent As Long) As Long Sub TimerProcess(ByVal hwnd As Long, _ ByVal umsg As Long, _ ByVal idevent As Long, _ ByVal dwtime As Long) Compteur = Compteur + 1 Feuil1.Cells(1, 1) = CStr(Compteur) End Sub 68

Contrôle du temps d'exécution d'une application Timer système de la librairie user32 Option Explicit Dim IDTimer As Long Dim EtatTimer As Boolean Private Sub Commandbutton1_Click() 'Starts and stops the timer. If EtatTimer = False Then IDTimer = SetTimer(0, 0, 10, AddressOf TimerProcess) If IDTimer = 0 Then MsgBox "Timer non créé" Exit Sub End If EtatTimer = True CommandButton1.Caption = "Stop Timer" Else IDTimer = KillTimer(0, IDTimer) If IDTimer = 0 Then MsgBox "impossible d'arrêter le timer" End If EtatTimer = False CommandButton1.Caption = "Start Timer" End If End Sub 'A mettre dans le module "This WorkBook" Private Sub WorkBook_Open() EtatTimer = False CommandButton1.Caption = "Start Timer" End Sub 69