OVH Cloud OVH Cloud

byRef & byVal ?

4 réponses
Avatar
Titeuf
Quelqu'un peut-il m'expliquer dans quel cas on utilise ByRef et dans quel
cas on utilise ByVal ?

Merci

4 réponses

Avatar
Bul
"comme toujours" tout est dans l'aide

ByVal Facultatif. Indique que l'argument est passé par valeur.
Moyen permettant de passer à une procédure la valeur d'un argument plutôt
que son adresse. La procédure peut de ce fait accéder à une copie de la
variable. La valeur réelle de cette dernière n'est donc pas modifiée par
la procédure à laquelle elle est passée.

ByRef Indique que l'argument est passé par référence. ByRef est l'option
par défaut dans Visual Basic.
Moyen permettant de passer à une procédure l'adresse d'un argument plutôt
que sa valeur. La procédure peut ainsi accéder à la variable proprement
dite. 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. Par défaut, les arguments
sont passés par référence.
@+
Avatar
Christian HUBERT-HUGOUD- Xtrem7
Tu peux utiliser ByRef lorsque tu souhaites que ta fonction ou ta procédure
modifie la valeur des paramètres que tu lui a passés. Sinon utilise ByVal

ByRef demande à être très vigilant sur l'utilisation des paramètres à
l'intérieur des fonctions et procédures. ByRef est plus rapide que ByVal.

Christian


"Titeuf" a écrit dans le message de
news:%
Quelqu'un peut-il m'expliquer dans quel cas on utilise ByRef et dans quel
cas on utilise ByVal ?

Merci




Avatar
ng
Salut,

ByVal : envoie uniquement la valeur (contenu de la variable) à la fonction.
ByRef : passe le pointeur (la référence) cad l'adresse mémoire de la
variable à la fonction.

Exemple :

Public Sub Test1(ByVal strArg As String)
strArg = "Salut"
End Sub

Public Sub Test2(ByRef strArg As String)
strArg = "Salut"
End Sub

Private Sub Form_Load()
Dim strVar As String
strVar = "ma valeur"
Call Test2(strVar) '//passage de la valeur uniquement
Call MsgBox(strVar) '//Aucun changement
Call Test1(strVar) '//passage de l'adresse
Call MsgBox(strVar) '//la procédure a pu modifier la variable par son
adresse
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Titeuf a écrit :

Quelqu'un peut-il m'expliquer dans quel cas on utilise ByRef et dans
quel cas on utilise ByVal ?

Merci


Avatar
Pierre Alexis [MVP]
Salut Titeuf,

Tu as écrit :

Quelqu'un peut-il m'expliquer dans quel cas on utilise ByRef et dans quel
cas on utilise ByVal ?

Merci



Question 23 - Quelle est la différence entre les mots-clés "ByVal" et "ByRef"
?
http://faq.vb.free.fr/index.php?question#

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/