Sub Test()
Dim Donnee As Integer
Donnee = 1
MaProcedure_1 Donnee
MsgBox Donnee
MaProcedure_2 Donnee
MsgBox Donnee
MaProcedure_3 Donnee
MsgBox Donnee
End Sub
'Passe la référence en argument:
'(la donnée initiale sera modifiée et prendra la valeur
'résultant de l'argument).
'C'est la variable 'Donnee' qui est transmise à la sous procédure.
'La valeur réelle de cette dernière peut, de ce fait, être modifiée
'par la procédure à laquelle elle a été passée.
Sub MaProcedure_1(ByRef x As Integer)
x = x * 2
End Sub
'Passe la valeur en argument:
'(la donnée initiale ne sera pas modifiée)
'C'est une copie de la variable qui est transmise à la sous procédure.
'La valeur réelle de cette dernière n'est donc pas modifiée par la procédure à laquelle
'elle est passée.
Sub MaProcedure_2(ByVal y As Integer)
y = y * 2
End Sub
'ByRef est la valeur par défaut si elle n'est pas spécifiée.
Sub MaProcedure_3(z As Integer)
z = z * 2
End Sub