Outils logiciels pour les cours Paris II

Cours Paris II

Stages/ Thèses/ Séminaires

Laboratoire

edit SideBar

Cours4bis

Composition des macros VBA

  • Rappels: Instructions de base
    • Assignation
    • Boucles
    • Test
    • Divers: goto abc
  • Structures de données:
    • Strings
    • Integer, Real
    • matrices A(100), B(20,20),...
    • files

Programme= Algorithme + structure de données

  • Exemple
    • Fonction Fréquence =FREQUENCE(A1:A15;B1:B4)

Tableau de données: A1:A15

Tableau d'intervalles: B1:B4

Principe: Combinaisons de boucles et de tests.

  • Parcourir la liste des intervalles
  • Pour chaque intervalle, parcourir la liste des données et décider si k=k+1
  • Résultat= C1:C5
 Sub Frequence1()


 'M est la dimension du tableau résultat colonne 3, M-1 la dimension du tableau intervalle, colonne 2
 'N est la dimension du tableau à analyser, colonne 1
 'P est la valeur précédente de l'intervalle

 M = 5
 N = 15
 For j = 1 To M
 k = 0
   For i = 1 To N
   If (j = 1 And Cells(i, 1) <= Cells(j, 2)) Then
     k = k + 1
   ElseIf (j > 1 And j < M And Cells(i, 1) <= Cells(j, 2) And Cells(i, 1) > P) Then
     k = k + 1
   ElseIf (j = M And Cells(i, 1) > P) Then
     k = k + 1
   End If
   Next i
 Cells(j, 3) = k
 P = Cells(j, 2)
 Next j
 End Sub
  • Assembler/ Composer
    • Subroutines
    • Fonctions
    • Modules

Fonctions
 Function Area(x As Single, y As Single) As Single
 Area = x * y
 End Function


 Sub a1()
 x5 = 10
 Cells(5, 5) = Area(6.5, 3.4)
 End Sub

Compositions
 Sub a11()

 Call Frequence1
 Call a1
 End Sub

 Sub a2(y As Integer)

 Cells(6, 6) = Area(6.5, 3.4) + y
 End Sub

 Sub a21()

 Call a2(10 + x5)
 End Sub
  • Passages de paramètres

Passage par référence
  Sub TestPassing1()
  Dim y As Integer
  y = 50
  AddNo1 y
  MsgBox y
  End Sub
  Sub AddNo1(ByRef x As Integer)
  x = x + 10
  End Sub

Passage par valeur
  Sub TestPassing2()
  Dim y As Integer
  y = 50
  AddNo2 y
  MsgBox y
  End Sub
  Sub AddNo2(ByVal x As Integer)
  x = x + 10
  End Sub
  • Objets: Worksheets

Objets VBA
   Sub ShowWorkSheets()
   Dim mySheet As Worksheet
   For Each mySheet In Worksheets
   MsgBox mySheet.Name
   Next mySheet
   End Sub

Fichier Excel functions et compositions

UP2