Variable modifier

Résolu
quent -  
 quent -
Bonjour,

J'ai remarquer quelque chose qui m'étonne. Dans le code suivant :

Sub test()
Dim var As Integer
Dim var2 As Integer
var = 3
var2 = test2(var)
MsgBox (var)
End Sub

Function test2(var1)
var1 = 5
test2 = var1
End Function


La variable var1 dans la fonction test2 est censé être une copie de var non ?
Pourtant au moment ou la fonction modifie var1, elle modifie aussi var et ainsi le msgbox affiche 5.
Est-ce un bug ou quelque chose que je n'ai pas compris ?
J'utilise Excel2013.

Merci d'avance pour vos réponses

1 réponse

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Aide excel
    Tous les arguments sont passés aux procédures par référence, sauf indication contraire. Cette méthode est efficace en ce sens que le temps de passage des arguments et l'espace mémoire qu'ils occupent dans une procédure (4 octets) sont les mêmes quel que soit le type de données de l'argument.

    Essaies en passant le paramètre var par valeur à la fonction test2
    Function test2(ByVal var1)

    Cordialement
    0
    1. quent
       
      Merci ça marche ! Mais alors si j'ai bien compris ce n'était pas une copie qui était envoyer a la fonction mais quelque chose comme un pointeur ?
      0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Tout à fait.
      0
    3. quent
       
      Ok merci beaucoup pour l'explication :)
      0