Sub et Function

Premier appelle Deuxieme

Sub Premier()
  MsgBox "Je suis dans Premier"
  Deuxieme
End Sub

Sub Deuxieme()
  MsgBox "Je suis dans Deuxieme"
End Sub


Utilisation d'Exit Sub

Sub Troisieme()
  MsgBox "Premiere phrase"
  Exit Sub
  MsgBox "Deuxième Phrase phrase"
End Sub


Quatrieme Appelle cinquieme, et Exit Sub

Sub Quatrieme()
  MsgBox "Phrase 1, Quatrieme"
  Cinquieme
  MsgBox "Phrase 2, Quatrieme"
End Sub

Sub Cinquieme()
  MsgBox "Phrase 1, Cinquieme"
  Exit Sub
  MsgBox "Phrase 2, Cinquieme"
End Sub


Utilisation d'un paramètre

Sub Sixieme()
  Septieme 44
End Sub

Sub Septieme(LeParametre)
  MsgBox "Sixieme vient de m'envoyer " & LeParametre
End Sub


Utilisation de 2 paramètres

Sub Huitieme()
  Neuvieme 32, "Chat"
End Sub

Sub Neuvieme(Nombre As Integer, Animal As String)
  MsgBox "Huitieme m'envoie l'animal " & Animal
  MsgBox "Huitieme m'envoie le nombre " & Nombre
End Sub


Envoi d'un tableau en paramètre

Sub Proc1()
  Dim Armoire(2)
  Armoire(1) = "Bidule"
  Armoire(2) = "machin"
  Proc2 Armoire
  MsgBox Armoire(2) ' Coucou et pas machin !
End Sub

Sub Proc2(MonTab())
  MsgBox MonTab(1) ' Bidule
  MonTab(2) = "Coucou"
End Sub


Appel simple à une fonction

Sub Dixieme()
  MsgBox Onzieme
End Sub

Function Onzieme()
  Onzieme = 32
End Function


Appel à une fonction avec un paramètre

Sub Douzieme()
  MsgBox LeDouble(34)
End Sub

Function LeDouble(QuelNombre)
  LeDouble = QuelNombre * 2
End Function


Appel d'une fonction avec 2 paramètres

Sub Treizieme()
  MsgBox Additionne(4, 6)
End Sub

Function Additionne(Nombre1 As Integer, Nombre2 As Integer)
  Additionne = Nombre1 + Nombre2
End Function


Appel à une fonction plus élaborée

Sub Quatorzieme()
  MsgBox ChiffreEnLettre(3)
End Sub

Function ChiffreEnLettre(QuelChiffre)
  Select Case QuelChiffre
    Case 1: ChiffreEnLettre = "Un"
    Case 2: ChiffreEnLettre = "Deux"
    Case 3: ChiffreEnLettre = "Trois"
    Case Else: ChiffreEnLettre = "##ERREUR##"
  End Select
End Function


Appel à une fonction nettement plus élaborée, qui renvoie le chiffre en anglais ou en français

Sub Quinzieme()
  MsgBox ChiffreEnLettreAnglaisFrancais(3, "Anglais")
  MsgBox ChiffreEnLettreAnglaisFrancais(2, "Français")
  MsgBox ChiffreEnLettreAnglaisFrancais(66, "Français")
  MsgBox ChiffreEnLettreAnglaisFrancais(66, "Anglais")
  MsgBox ChiffreEnLettreAnglaisFrancais(2, "Italien")
End Sub

Function ChiffreEnLettreAnglaisFrancais(QuelChiffre, Langue)
  Select Case Langue
    Case "Français":
      Select Case QuelChiffre
        Case 1: ChiffreEnLettreAnglaisFrancais = "Un"
        Case 2: ChiffreEnLettreAnglaisFrancais = "Deux"
        Case 3: ChiffreEnLettreAnglaisFrancais = "Trois"
        Case 4: ChiffreEnLettreAnglaisFrancais = "Quatre"
        Case Else: ChiffreEnLettreAnglaisFrancais = "NOMBRE INCONNU"
      End Select
    Case "Anglais"
      Select Case QuelChiffre
        Case 1: ChiffreEnLettreAnglaisFrancais = "One"
        Case 2: ChiffreEnLettreAnglaisFrancais = "Two"
        Case 3: ChiffreEnLettreAnglaisFrancais = "Three"
        Case 4: ChiffreEnLettreAnglaisFrancais = "Four"
        Case Else: ChiffreEnLettreAnglaisFrancais = "NUMBER UNKNOWN"
      End Select
    Case Else
      ChiffreEnLettreAnglaisFrancais = "LANGUE INCONNUE"
    End Select
  ChiffreEnLettreAnglaisFrancais = ChiffreEnLettreAnglaisFrancais
End Function