Outils logiciels pour les cours Paris II

Cours Paris II

edit SideBar

Cours 4

Introduction à VBA

Pour en savoir plus sur VBA

Visual Basic: langage interprété pour:

  • programmer des applications
  • développer des programmes dans le monde Microsoft (MS)
  • Utiliser les objects MS

Mise en place

  • options Excel
  • onglet Développeur
    • Visual Basic
    • Macros

Modèle impératif

  • variables x,y,z, toto, a(100)
  • chaque variable est allouée à un espace mémoire
  • instruction élémentaire: soit une allocation (x=3 par exemple) soit un test (x=y ?)
  • instruction (simple) de controle:
    • Test: if (x=y) then ... else ... End if
    • Boucle: for i=1 to 100 step 1 ......Next
    • Do while i< 100 ......loop

Type de variables

  • Dim n,m as Integer
  • Dim a(100) as Integer
  • Dim str As String

Types de données

  • Byte Un octet : entier de 0 à 255, 1 octet
  • Boolean Booléen qui prend ses valeurs dans {True,False}, 2 octets
  • Integer Entier de -32 768 à 32 768 , 2 octets
  • Long Entier de -2 147 483 648 à -2 147 483 648, 4 octets
  • Single Decimal de petite taille, 4 octets
  • Double Decimal de grande taille , 8 octets
  • Currency Des décimaux avec peu de valeurs après la virgule, 8 octets
  • Date Une date entre le 1er Janvier 100 et le 31 décembre 9999, 8 octets
  • Decimal Un nombre décimal , 12 octets
  • Object Réference à un objet quelque soit son type, 4 octets
  • String Chaine de caractère, de 0 à 2 milliard de caractères, 10+longueur de chaine octets
  • Variant Valeur numérique jusqu'au type double. Peut aussi servir pour les caractères ,16 octets

Fonctions de base

  • Arithmérique, +, *, /
  • Assemblage de mots &, Mid
  • Opérateurs sur des objets

Développement

  • Sub pour Subroutine
  • Function
  • Modules
 Exemples:
  • Donner un nom à une macro: "b"

Sub b()
MsgBox ("Bonjour”)
End Sub

  • Boucles: while ou For
   Sub a1()
   Dim i, n As Integer
   n = 5
   i = 1
   Do While i <= n
   Cells(i, i) = i
   i = i + 1
   Loop
   End Sub

   Sub a2()
   Dim i, n As Integer
   n = 5
   i = 1
   For i = 1 To n
   Cells(i, i + 5) = i
   Next i
   End Sub

   Sub a3()
   Dim i, j, n As Integer
   n = 5
   i = 1
   j = 1
   Do While j <= n
     For i = 1 To n
     Cells(i, j) = i + j
     Next i
   j = j + 1
   Loop
   End Sub
  • Test if (...) then else .... endif
   Sub a4()
   Dim i, j, k, n As Integer
   n = 5
   i = 1
   j = 1
   Do While j <= n
    For i = 1 To n
    k = (i + j) Mod 2
    If k = 0 Then
     Cells(i, j) = 0
    Else
     Cells(i, j) = 1
    End If
    Next i
   j = j + 1
   Loop
   End Sub
  • Privée ou publique
  Private Sub c()
  Range("B1") = 1
  Cells(2,2)=2
  End Sub
  Public Sub ShowTime1()
  Range("C1") = Now()
  End Sub
  • Gérer des cellules
  Sub drawcell()
  Range("A10").Select
  With Selection.Interior
  .ColorIndex = 6
  .Pattern = xlSolid
  End With
  Range("A11").Select
  With Selection.Interior
  .ColorIndex = 8
  .Pattern = xlSolid
  End With
  End Sub

  Sub a5()
  ' Test  si i+j est pair ou impair
   Dim i, j, k, n As Integer
   n = 5
   i = 1
   j = 1

   Do While j <= n
    For i = 1 To n
     k = (i + j) Mod 2
     If k = 0 Then
      Cells(i, j).Select
      With Selection.Interior
     .ColorIndex = 6
     .Pattern = xlSolid
      End With
     Else
      Cells(i, j).Select
      With Selection.Interior
     .ColorIndex = 8
     .Pattern = xlSolid
      End With
  End If
  Next i
  j = j + 1
  Loop
  End Sub
  • Chaines de caractères
 Sub test()
 Dim str As String
 str = "hello" & Chr(13) & chr(13) & "world" 
 MsgBox str
 End Sub

Fichier Excel avec ces macros

Fichier Excel avec les macros a1,a2,a3,a4,a5

UP2