• Aucun résultat trouvé

Projet   Rappel  VBA

N/A
N/A
Protected

Academic year: 2022

Partager "Projet   Rappel  VBA"

Copied!
62
0
0

Texte intégral

(1)

Projet  

Rappel  VBA  

(2)

VBA  :  quoi  &  pourquoi  ?    

•  VBA  :  quoi  ?  

–  Langage  et  environnement  de  programma>on   Orienté  Objets    

–  A5aché  aux  documents  MS  Office  

•  VBA  :  pourquoi  ?  

–  Associer  un  comportement  ac=f  à  des  documents   Office    

•  Calculs,  vérifica>ons,  etc.  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   2  

(3)

VBA  :  documents  MS  Office  

•  Un  document  MS  Office  est  composé  des   plusieurs  éléments…  

Fichier  Access   Tables  (données)   Fichier  Excel   Requêtes    

Formulaires   États  (rapports)   Modules  (VBA)  

Feuilles   Données   Formules   Modules  (VBA)  

MS  Access   MS  Excel  

(4)

VBA  :  Modèle  OO  

•  Modèle  Objets  de  VBA  

–  Les  éléments  manipulés  par  VBA  sont  des  objets  

•  Worksheet  (feuille  de  calcul),  Range  (cellules),    

Form  (formulaire),  Report  (état),  RecordSet  (requête)…  

–  Il  est  possible  de  créer  de  nouvelles  classes  è  

modules  de  classe    

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   4  

Modèle  OO   Excel   Modèle  OO  

Access  

(5)

VBA  :  Modèle  OO  

•  Un  objet  VBA  possède  :  

Propriétés     Comportement  

A5ributs     Procédures   Événements  

Procédures  Sub  

Func=on   Procédure    à  opéra>on  qu’on  

appelle  explicitement     opéra>on  sans  retour  

de  valeur   opéra>on  retournant    

une  valeur  

Property   Ge#ers    

(Property  Get)       et  Se#ers     (Property  Let)     pour  les  aeributs  

Ac>on  de  

l’u>lisateur  (ou  du   système)  sur  un   objet,  déclenchant  

un  traitement    

(6)

VBA  :  Modèle  OO  

•  Collec=ons  

–  Ensemble  d’objets  d’un  même  type  

•  Worksheets  (toutes  feuilles  de  calcul),  Forms  (tous  les   formulaires),  Controls  (tous  champs  d’un  formulaire)  …   Collec+on!["NomObjet"]    Forms!["Employe"]  

Collec+on("NomObjet")    Forms("Employe")  

Forms("Employe").Controls("Embauche")   Worksheets("Feuil1").Cells(1,1)  

       

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   6  

Formulaire  

«  Employe  »    

Contrôle  

«  Embauche  »     Feuille  

«  Feuil1  »     Cellule  

 (  1,1  )      

(7)

VBA  :  Modules  

•  Modules  con>ennent  le  code  VBA  pour  un   document    

•  Plusieurs  types  de  modules  

–  MS  Objets  

•  Evènements    

–  Modules  standards    

•  Procédures  u>litaires    

–  Modules  de  classe  

•  Classes  crées    

par  l’u>lisateur  

(8)

VBA  :  concepts  de  base    

•  Environnement  de  

programma>on  (VBE)  

–  Excel  :  Ruban  

«  Développeur  »  (onglet   à  ac>ver)  

–   Access  :  Ruban  «  Ou>ls   de  bases  de  données  »  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   8  

(9)

VBA  :  concepts  de  base    

•  Variables  

–  Une  variable  est  un  conteneur,  on  y  garde  une  valeur   –  Déclara>on  est  fortement  recommandée,  mais  pas  

obligatoire    

•  Dim  variable  AS  Type  

 Dim  auj  As  Date  

 auj  =  Date            'date  actuelle  

Types  des  données  

AS  Integer   à  en>er    

AS  Single   à  numérique  (float)  

AS  Boolean   à  booléen  (True  /  False)   AS  String   à  chaîne  de  caractères     AS  Variant   à  

   n’importe  quel  type  de  données   AS  Object   à    

 objet  de  n’importe  quelle  classe  

24  /  11  /  2014  

auj  

(10)

VBA  :  concepts  de  base    

•  Variables  

–  Une  variable  est  un  conteneur,  on  y  garde  une   valeur  …  

–  …  qu’on  pourra  u>liser  plus  tard  !    

–  Pour  les  objets,  l’aeribu>on     se  fait  à  l’aide  de  Set  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   10  

Dim  a  As  Integer   Dim  b  As  Integer   a  =  2    

 

b  =  a  *  a    

Dim  cellule  As  Range  

  Set    cellule  =  Worksheets("Feuil1").Cells(1,1)     MsgBox  cellule.Valeur  

aeribu>on  

usage   Propriété  Valeur  

de  la  classe  Range  

Objet . Opéra@on  

(11)

VBA  :  concepts  de  base    

•  Fonc=ons  (Func=on)  

–  Opéra>on  qui  retourne  une  valeur…  

–  …correspondant  au  nom  de  la  fonc>on    

Private  |  Public  Func=on  MaFonc+on  (paramètres…  )  AS  Type              MaFonc+on  =  valeur_à_retourner  

End  Sub  

Public   Func=on   DateAujourdhui()  As  Date            Dim  auj  As  Date  

         auj  =  Date  

         DateAujourdhui  =  auj  

End  Func=on  

(12)

VBA  :  concepts  de  base    

•  Procédures  de  type  Sub  

–  Exécu>on  d’une  opéra>on  qui  ne  retourne  aucune   valeur  

Private  |  Public  Sub  NomProcédure  (paramètre  AS  type  …  )        .  .  .  

End  Sub  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   12  

Sub  ValeurA1()  

           Dim  cellule  As  Range  

           Set  cellule  =  Worksheets("Feuil1").Cells(1,  1)              MsgBox  (cellule.Value)  

End  Sub  

(13)

VBA  :  concepts  de  base    

•  Événements  :  

–  Ac>ons  réalisées  par  l’u>lisateur  (ou  le  système)  sur  un   élément  (feuille,  formulaire,  contrôle…)  

•  Exemples  :  ouverture  d’un  document,  clique  sur  un  bouton,   fermeture  de  l’applica>on,  ouverture  d’un  formulaire…    

–  Le  type  d’événement  varie  en  fonc>on  de  l’élément  qui   reçoit  l’ac>on    

Sur  une  fenêtre     (formulaire  ou  état)  

•  Open  :  à  l’ouverture,  avant   d’afficher  le  1

er

 registre  

•  Load  :  lorsque  le  1

er

  registre  est  affiché  

•  Close  :  à  la  fermeture  

Contrôle  

•  Click  :  lorsqu’on  lui  clique  dessus  

Données  (formulaire  /  contrôle  associé  à  une  source   de  données  RecordSource  /ControlSource)  

•  BeforeInsert  /  AderInsert:    avant/après  inser>on   nouveau  registre  

•  BeforeUpdate/AderUpdate:  avant/après  mise  à  

jour  registre  

(14)

VBA  :  concepts  de  base    

•  Evénements  

–  Exemple  :  affichage  d’un  message  à  l’ouverture   d’un  document  Excel  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   14  

Private  Sub  Workbook_Open()  

       MsgBox  ("Bienvenue  dans  le  document    "  _                        &  ThisWorkbook.Name  &  Chr(10)  _  

                   &  "Feuille  ac>ve  :  "    _    

                   &  ThisWorkbook.Ac=veSheet.Name  )  

 End  Sub  

élément  qui   reçoit  l’ac>on   («  Workbook  »)  

quelle  type  

d’ac>on  

(«  Open  »)  

(15)

&  :  concaténa+on  

_  :    instruc+on  sur  plusieurs  lignes    

VBA  :  évènements  &  procédures  

•  Evènements  &  Procédures  

–  A  par>r  d’un  événement,  on  peut  invoquer  une   fonc>on  ou  une  procédure  Sub  

Private  Sub  Ancien_Click()  

       annees  =  Anciennete   (Forms("Employe").Controls("Embauche"))  

       MsgBox  "Anciennete  de  "  &   annees   &  "  ans  "  _  

               &  "à  par+r  du  "  &  Forms("Employe").Controls("Embauche"),  vbInforma+on   End  Sub  

Public   Func=on   Anciennete (dateEntree  As  Date)  As  Integer          Dim  auj  As  Date  

       auj  =  Date            'date  système  actuelle        

       Anciennete  =  DateDiff("yyyy",  dateEntree,  auj)            

End  Func=on  

(16)

VBA  :  évènements  &  procédures  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   16  

Private  Sub  Ancien_Click()  

       annees  =  Anciennete  (Forms("Employe").Controls("Embauche"))          MsgBox  "Anciennete  de  "  &  annees  &  "  ans  "  _  

               &  "à  par+r  du  "  &  Forms("Employe").Controls("Embauche"),  _    vbInforma+on  

End  Sub  

Public   Func=on  Anciennete (dateEntree  As  Date)  As  Integer          Dim  auj  As  Date  

       auj  =  Date            'date  système  actuelle        

       Anciennete  =  DateDiff("yyyy",  dateEntree,  auj)            

End  Func=on  

(17)

VBA  :  évènements  &  procédures  

Objet_Evénement      

NomBouton    _    Click      

(18)

VBA  :  évènements  &  procédures  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   18  

Private  Sub  Annuel_Click()  

          SalaireAnnuel   Forms("Employe").Controls("Salaire")          

End  Sub  

Public  Sub  SalaireAnnuel(Salaire  As  Single)  

       Dim  Annuel  As  Single          Annuel  =  Salaire  *  12  

       MsgBox  "Salaire  annuel  est  de  "  &  Annuel  

End  Sub  

(19)

VBA  :  tableaux  

•  Tableaux    

–  Variables  capables  de  garder  plusieurs  valeurs     –  Variable  au  mul=plicité  >  0    

–  Première  posi>on  est  0,  sauf  indica@on  contraire    

Dim  tabBiDim(2,  2)  As  Currency   tabBiDim(0,  0)  =  1.5  

tabBiDim(1,  0)  =  1.5  

Dim  tab_0_a_2(3)  As  Currency  

tab_0_a_2(1)  =  1.5   0   0   1.5   1  

0  

2  

1.5   0  

1   2  

0  

3   tab_0_a_2  

Dim  tab_1_a_3(1  To  3)  As  Currency  

tab_1_a_3(1)  =  1.5   tab_1_a_3  

1.5   0  

0   1  

1.5   0  

0  

tabBiDim   1  

(20)

VBA  :  Instruc>ons  de  contrôle    

•  Instruc>ons  condi>onnelles  :  if…  else…    

   

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   20  

If   mont  <=  100   Then  

               MsgBox  "Frais  "   &  mont   &    _    

 "  inférieur  à  100  :  Validé  !"  ,  vbInforma+on  

Else  

               MsgBox  "Frais  "   &  mont   &  _  

               "  supérieur  à  100  :  Valida>on  par  le  directeur",  _                    vbOKOnly  

 End  If  

If  condi+on  Then  

       'si  condi+on  vraie  …   Else  

       'si  condi+on  faux   End  If  

If  cond  

Bloc  Then  

[  VRAI  ]   [  FAUX]  

Bloc  Else  

End  If  

(suite)  

op@onnel  

(21)

VBA  :  Instruc>ons  de  contrôle    

•  Instruc>ons  condi>onnelles  :  if…elseIf…else…  

If   mont  >  0   And   mont  <=  50   Then  

               MsgBox  "Frais  "   &  mont   &    _    

 "  inférieur  à  50  :  Validé  !",  vbInforma+on     ElseIf   mont  <=  100   Then  

               MsgBox  "Frais  "  &  mont  &  _  

                 "  supérieur  à  50  et  inférieur  à  100  :  "   _  

   &   "  Valida>on  par  le  RH",      vbOKOnly     Else  

               MsgBox  "Frais  "   &  mont   &  _  

               "  supérieur  à  100  :  Valida>on  par  le  directeur",   _                    vbOKOnly  

 End  If   If  condi+on  Then  

       'si  condi+on  vraie  …   ElseIf  condi>on2  Then            'si  condi+on2  vrai     Else  

       'si  aucune  des    

 '  précédentes  

End  If  

(22)

VBA  :  Instruc>ons  de  contrôle    

•  Boucles  :  Do  While…  Loop    

   

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   22  

Do  While  condi+on    

       '  exécute  tant  que  la              '  condi+on  est  vraie   Loop    

'tant  qu’il  reste  des  registres  dans  le   'RecordSet  

Do  While  Not  rsl.EOF  

             tot  =  tot  +  rsl("Montant")                rsl.MoveNext  

 Loop  

Bloc  While  

cond   [  VRAI  ]   [  FAUX]  

(suite)  

Loop  

(23)

VBA  :  Instruc>ons  de  contrôle    

•  Boucles  :  For…Next,  For  each  …  Next  

For  début  To  fin  Step  n            '  exécute  de  début            '  jusqu’à  fin  

       '  de  n  en  n  (step)   Next    

For  i  =  0   To  2     Step  1  

           somme  =  somme  +   tab_0_a_2  (  i  )   Next  

début   i  =  0   Bloc  for  

Next   i  =  i  +  step  

fin  ?  

[  i  =    2  ]  

[  else  ]  

(24)

VBA  :  Instruc>ons  de  contrôle    

•  Boucles  :  For…Next,  For  each  …  Next  

–  On  peut  imbriquer  plusieurs  boucles…  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   24  

For  début  To  fin  Step  n            '  exécute  de  début            '  jusqu’à  fin  

       '  de  n  en  n  (step)   Next    

For  i  =  0   To  1  

          For  j  =  0   To  1  

                   somme  =  somme  +   tabBiDim  (  i  ,  j  )                         Next  

  Next  

Pour  chaque  valeur  de   i ,    

on  fait  j  de  0  à  1  

(25)

VBA  :  Instruc>ons  de  contrôle    

•  Boucles  :  For…Next,  For  each  …  Next  

–  On  peut  aussi  parcourir  toute  une  collec>on  

For  Each  var  IN  collec+on          '  pour  chaque  élément  var          '  dans  la  collec+on    

       '  (ou  tableau)   Next    

'on  va  afficher  les  nombre  de  registres  dans     'chaque  table  

  For   Each  t   In  CurrentDb.TableDefs  

               MsgBox  t.Name  &  "  :  "  &  t.RecordCount  

  Next  

(26)

VBA  :  accès  aux  données  EXCEL  

•  Les  données  dans    

un  document  Excel  (objet  ThisWorkbook)   s’organisent  en  feuilles  de  calcul  (objets   Worksheet)  et  en  cellules  (objets  Range)  

•  Quelques  objets  importants  

–  ThisWorkbook  :  document  courant  

–  Ac=veWorkbook  :  document  en  1 er  plan  (ac>f)   –  Ac=veSheet  :  feuille  de  calcul  ac>ve    

•  Les  collec=ons  vont  permeere  l’accès  aux  

différents  objets  de  la  classe  correspondante  

–  Worksheets("Feuil1")   à  accès  à  la  feuille  «  Feuil1  »  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   26  

(27)

VBA  :  accès  aux  données  EXCEL  

•  Range      

–  La  no>on  de  Range  est  essen>elle  dans  Excel.  

–  Un  objet  Range  est  une  région  dans  une  feuille   contenant  une  ou  plusieurs  cellules  

–  Les  opéra>ons  de  la  classe  Range  vont  nous  

permeere  d’interagir  ou  de  modifier  les  cellules  

Ac>veSheet.Range("A1").Value   Ac>veSheet.Cells(1,  2).Value  

L’opéra>on  Value  récupère   la  valeur  de  la  cellule  

La  collec>on  Cells  con>ent   un  ensemble  d’objets  Range  

A5en=on  :  les  collec>ons  

démarrent  en  1  (et  pas  0)  

(28)

VBA  :  accès  aux  données  EXCEL  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   28  

Sub  UnRange()  

         MsgBox  Ac=veSheet.Range("A1").Value            MsgBox  Ac=veSheet.Cells(1,  2).Value   End  Sub  

Private  Sub  ChangeA1()            

           Worksheets("Feuil1").Cells(1,  1).Font.Size  =  12   End  Sub  

changement  de  la  

taille  de  la  police  

(29)

VBA  :  accès  aux  données  ACCESS  

•  Accès  aux  données  des  tables  peut  se  faire  de   différentes  manières    

–  Par  formulaires,  par  requête...  

•  Source  :  Form  aeaché  à  une  table    

–  On  peut  même  ouvrir  des     bases  sur  d’autres  fichiers  

•  Ex.:  un  fichier  Excel  qui  importe  

 les  données  d’un  fichier  Access  

(30)

VBA  :  accès  aux  données  ACCESS  

•  Exemple     Employés    

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   30  

Formulaire  

«  Employe  »      

(mode  Créa=on)  

(31)

•  Quelques  objets  importants    

–  DBEngine  :  objet  qui  gère  l’accès  à  une  BdD   –  Database  :  BdD  ouverte  

bds  =  DBEngine.OpenDatabase("c:\docs\clients.accdb")   bds  =  CurrentDb()  

–  RecordSet  :  ensemble  d’enregistrements  

•  Manipula>on  des  enregistrements    

Set  rst  =  dbs.OpenRecordSet("Frais",  dbOpenTable)   Set  rst  =  CurrentDb().OpenRecordset(sql)  

rst.MoveFirst   rst.MoveNext   rst.Edit  

VBA  :  accès  aux  données  ACCESS  

Requête  modifiable   Requête  données  en  

lecture  seule  

(32)

VBA  :  Accès  aux  BdD  

•  Exemple  :  calculer  les  frais…    

32  

matr  =  Me.Controls("Matricule")  

sql  =  "SELECT  Frais.Montant  FROM  Frais  WHERE  Frais.Matricule="  &  matr     Set  rsl  =  CurrentDb().OpenRecordset(sql)  

       

If  rsl.RecordCount  >  0  Then  

        rsl.MoveFirst  

       Do  While  Not   rsl.EOF  

             tot  =  tot  +   rsl("Montant")                rsl.MoveNext  

       Loop   End  If                      

MsgBox  "Total  des  frais  =  "  &  tot,  vbOKOnly  

Exécu>on  de  la  requête  SQL   S’il  y  a  des  enregistrements  (RecordCount)  

Avance  au  prochain  enregistrement  

Récupère  un  champs    rsl  ("a\ribut")     Tant  qu’on  n’arrive  pas  à  la  fin  des  enregistrements(EOF)  

Avance  au  premier  enregistrement  

(33)

VBA  :  modules  de  classe  

•  Modules  de  classes  

–  Défini>on  d’une  classe    

•  A5ributs  à  variables    

•  Opéra=ons    

–  Property  Get  /  Let   –  Func=on  /  Sub    

Les  a\ributs  sont  «  exposés  »  en  tant     que  «  Property  »  par  les  Get  et  Let    

–  Usage  :  

•  Dim  msg  AS  New  MessageBox  

•  Set  msg  =  New  MessageBox  

•  msg.Titre  =  "nouveau  =tre"      exécute  Let  Titre  

•  …  msg.Titre  …        exécute  Get  Titre  

(34)

VBA  :  modules     de  classe  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   34  

Aeributs  

Get  :  geeer  (getTitre)   Accès  à  la  propriété   Titre  

Let  :  seeer  (setTitre)   Modifie  la  propriété   Titre  

Func=on  confirma>on  

Opéra>on    

(35)

VBA  :  modules  de  classe  

Private  Sub   btnValider_Click()  

   'déclara>on  d'un  objet  de  type  MessageBox  

       Dim  msg  As  New  MessageBox  

   'usage  de  l'objet  Msg  

        msg.Titre  =  "Valida=on  frais  "         ’VBA  appelle  le  Let  Titre          If   msg.confirma=on ("Valider  frais  ?  ")  =  True  Then  

               valider  Me.Frais.Controls("NumFrais"),  True  

               MsgBox  "Frais  confirmé  !",  vbOKOnly,   msg.Titre          Else  

               valider  Me.Frais.Controls("NumFrais"),  False  

               MsgBox  "Frais  non  accepté  !",  vbOKOnly  +  vbExclama+on,  _    

 msg.Titre         ’ici  VBA  appelle  le  Get  Titre  

       End  If  

End  Sub  

(36)

VBA  :  modules  de  classe  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   36  

MessageBox  

(37)

Informa>que  

Modélisa>on  UML  

Objec=fs  :  

Exemple  de  projet  en  VBA  

(38)

Rappel  VBA  

•  VBA  est  un  langage  de  programma>on  (à  

l’instar  de  PHP)  qui  est  aeaché  aux  documents   MS  Office    

•  Un  programme  VBA  n’existe  que  s’il  est  aeaché   à  un  document  MS  Office  (une  fiche  Excel,  une   base  de  données  Acces)  

•  Grâce  au  VBA,  on  peut  faire  des  calculs  

avancés,  de  vérifica>ons,  etc.  à  l’intérieur  des   documents  MS  Office    

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   38  

(39)

Exemple  en  VBA    

•  Exemple  de  projet  

–  Un  employé  d’une  société  de  vêtements  a  besoin  d’un   pe>t  système  pour  l’aider  à  gérer  les  commandes  

qu’il  passe  auprès  des  fournisseurs  

–  Le  système  doit  enregistrer  les  produits  et  les   commandes  

–  Si  le  stock  est  inférieur  à  un  seuil  (50  produits),  le   système  doit  conseiller  l’employé  à  passer  une   commande    

–  L’employé  doit  être  capable  d’enregistrer  un  nouveau  

fournisseur  lors  qu’il  passe  une  commande  

(40)

Exemple  VBA  

•   Démarche  

–  Établir  les  besoins  :  pour  quoi  faire  ?  

•  Diagrammes  de  cas  d’u=lisa=on    

–  Établir  les  données  :  que  manipule-­‐t-­‐on  ?  

•  Premier  diagramme  de  classes    

•  Diagramme  objets  pour  illustrer  le  diagramme  de  classes    

–  Établir  les  processus  :  que  faire  ?    Dans  quel  ordre  ?  

•  Réfléchir  aux  processus  mis  en  place    

•  Diagrammes  d’ac=vités    

–  Imaginer  les  interac=ons  :  Comment  procède-­‐t-­‐on  ?  

•  Quels  formulaires  aurons-­‐nous  proposer  ?  Quels  états  (rapports)  ?  

•  Réfléchir  aux  classes  «  contrôle  »  et  aux  modules  nécessaires  

•  Améliorer  /  compléter  le  diagramme  de  classes    

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   40  

(41)

Exemple  en  VBA    

•  Diagramme  de  Cas  d’U>lisa>on  :  fonc=onnalités  

(42)

Exemple  VBA  

•  Diagramme  de  classes  :  données  manipulées    

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   42  

(43)

Exemple  VBA  

•  Diagramme  objets  :  une  commande    

(44)

Exemple  VBA  

•  Diagramme  d’ac>vités  :  éditer  produits  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   44  

(45)

Exemple  VBA  

•  Diagramme  d’ac>vités  :  

Passer  une  commande  

(46)

Exemple  VBA  

•  A  par>r  des  diagrammes  d’ac>vités,  nous   pouvons  établir  les  formulaires  et  états   souhaités    

–  Formulaire  pour  nouveau  produit    

–  Formulaire  pour  une  nouvelle  commande  

–  Rapport  (état)  sur  une  commande  (pour  l’imprimer)  

•  Enrichir  diagramme  de  classes  :  

–  Ajouter  les  formulaires  et  les  états     –  Ajouter  les  éléments  de  «  contrôle  »    

(module  de  classes)  

•  contrôle  de  stock    

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   46  

(47)

Exemple  VBA  

•  Diagramme  de  classes  revisité    

(48)

Exemple  VBA  

•  Diagramme  de  paquetages  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   48  

(49)

Exemple  VBA  

•  Passage  du  projet  à  VBA  

–  Créa>on  de  la  base  de  données  

•  Les  tables  correspondent  aux  classes  de  données  

–  Créa>on  des  formulaires  

•  Correspondant  aux  classes  Form    

–  Créa>on  des  modules  de  programma>on    

•  Module  de  classe   à  correspond  à  la  no>on  de  classe  

–  CtlStock  :  défini>on  du  seuil  et  vérifica>on  du  stock  

•  Module   à  ensemble  d’objets  et  d’opéra>ons  

–  ModueGlobal  :  calculs  variés  (ex.  :  calculer  total  commande)  

(50)

Exemple  VBA  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   50  

•  Une  «  applica>on  »   VBA  s’u>lise  un  

document  MS  Office,   une  base  MS  Access   dans  ce  cas  

–  Créa>on  des  tables  et  

formulaires  prévus  dans  

le  diagramme  de  classes  

dans  Access    

(51)

Exemple  VBA  

•  Formulaires  :  Produit    

(52)

Exemple  VBA  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   52  

•  Formulaires  :  Commande  

(53)

Exemple  VBA  

•  Formulaires  :  Fournisseur  

(54)

Exemple  VBA  

•  VBA  va  nous  permeere  de  programmer  les   vérifica>ons  qu’on  a  indiqué  dans  les  

diagrammes  d’ac>vités  (par  des  évènements)  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   54  

(55)

Exemple  VBA  

•  Vérifica>on  stock  lors  de  l’édi>on  des  produits  

Aver=ssement  à  l’entrée   de  FormProduit  

Aver=ssement  dans  

FormProduit    

si  stock  <  seuil  

(56)

Exemple  VBA  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   56  

•  Code  VBA  pour  FormProduit  

Pour  chaque  produit   on  vérifie  le  stock  

À  l’ouverture  du  

formulaire,  on  vérifie   également  

Et  lorsqu’on  modifie  un   produit,  on  aver>t  

aussi  si  stock<seuil  

(57)

Exemple  VBA  

Le  seuil  est  le  même  pour   toute  l’applica>on  :  

Objet  «  controle  »  dans   ModuleGlobal    

Dans  les  modules,  on  peut  aussi  

ajouter  les  fonc=ons  (opéra>ons)  

qu’on  n’arrive  pas  à  meere  dans  

les  formulaires  

(58)

Exemple  VBA  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   58  

Les  «  Modules  de  Classe  »   correspondent  à  la  no>on  de  

classe.  

On  y  définit  des  propriétés   et  des  opéra=ons  

Opéra=on  CheckStockMin  

Ge5er  (Get)    et  Se5er  (Let)   pour  la  propriété  stockMin   Si  on  fait    

controle.StockMin  =  30     on  passe  par  le  Let  

Constructeur    

(59)

Exemple  VBA  

•  Code  VBA  pour  la   ligne  de   commande  

On  vérifie  le  stock  à  chaque   nouvelle  ligne  et  on  aver>  

l’u>lisateur  si  le  stock>seuil  

Les  lignes  de  commande   concernent  la  commande   affichée    

À  chaque  mise  à  jour,  on  

actualise  la  commande    

(60)

Exemple  VBA  

•  Code  VBA  pour  FormCommande  

60  

Calcul  total  de  la  commande,   effectué  concrètement  dans  le   ModuleGlobal  

Possibilité  d’impression    

(61)

Exemple  VBA  

•  Code  VBA  pour  FormCommande  

Pour  imprimer,  on  va  u=liser  un   état  capable  d’afficher  la  

commande  

(62)

Exemple  VBA  

•  Code  VBA  pour  FormCommande  

Manuele  Kirsch  Pinheiro  -­‐  UP1  /  CRI  /   62  

Pour  imprimer,  on  va  u=liser  un   état  capable  d’afficher  la  

commande  

Références

Documents relatifs

Donner une formule qui utilise les variables P 1 et P 2 et qui repr´ esente le fait que le portrait est exactement dans un des coffres.. Le portrait est dans le

(b) Deux villes peuvent toujours ˆ etre reli´ ees avec au plus un changement (c’est-` a-dire que soit on a une ligne directe entre les deux villes, soit il faut emprunter deux lignes

— r´ esultat, un pr´ edicat ternaire r´ esultat(e 1 , e 2 , r) repr´ esente le fait que le match de l’´ equipe e 1 avec l’´ equipe e 2 sur le stade de e 1 a ´ et´ e jou´ e

Pour cela on se donne une relation ` a trois argu- ments ligne(n, d, a) qui repr´ esente le fait qu’il existe une ligne directe identifi´ ee par le num´ ero n qui permet d’aller de

 the first form declares that the variable will contain a reference to an object of the named class.  the second form declares the variable then creates an instance of the

Elles ont été intégrées en premier dans Excel de 1992 (N° 4) puis dans Excel 93 (N° 5) qui a été le premier programme Microsoft voyant apparaître le langage VBA (voir définition

Right Renvoie une valeur de type Variant (String) contenant le nombre indiqué de caractères d'une chaîne en partant de la droite.. RTrim Renvoie une valeur de type Variant

Parmi celles-ci on pouvait trouver : viser à investir au maximum les médias (télévisions et radios) ; encourager les femmes du réseau CADTM Afrique à organiser