Bonjour,

Je suis débutant en VBA, ceci dit je cherche ici à calculer l'étendue d'une plage ip en fonction du masque. J'essaye d'utiliser le passage de valeur par référence.

Normalement si tout se passe bien, les valeurs passées en paramètre devraient être modifiées ou pas par la fonction après exécution.

Par exemple "=range(A1;B1;C1;D1;E1)"

Cela ne devrait-il pas modifier directement ces cellules après exécution ? Car cela ne fait que m'afficher 0 dans la cellule où est appelée la fonction. Les cellules A1-D1 qui devraient être modifiées, elles restent égales à elles-mêmes.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
Function Range( ByRef o1, ByRef o2, ByRef o3, ByRef o4, m As Integer )
 
If (24 <= m And m < 32) Then
    o4 = o4 + 2 ^ (32 - m) - 1
End If
 
If (16 <= m And m < 24) Then
    o3 = o3 + 2 ^ (24 - m) - 1
    o4 = 255
End If
 
If (8 <= m And m < 16) Then
    o2 = o2 + 2 ^ (16 - m) - 1
    o3 = 255
    o4 = 255
End If
 
If (1 <= m And m < 8) Then
    o1 = o1 + 2 ^ (8 - m) - 1
    o2 = 255
    o3 = 255
    o4 = 255
End If
 
End Function
Merci d'avance.