ByVal interet

Résolu/Fermé
Messages postés
3
Date d'inscription
vendredi 24 janvier 2014
Statut
Membre
Dernière intervention
27 mars 2014
-
Messages postés
16208
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 janvier 2022
-
Bonjour,

J'ai lu plusieurs tutos sur ByRef et ByVal, je comprends le fonctionnement. Mais seulement, je n'arrive pas a comprendre l'interet de ByVal.

Peut etre que je ne suis pas tombe, ou l'occasion de l'utiliser n'est encore jamais arrive, mais quand je vois les exemple sur les tutos qui utilisent ByVal, je ne comprends pas pourquoi on utilise ByVal.

voici un bon exemple:

Sub MaValeur ()
Dim X As Integer
X = 10
Carre(X)
MsgBox(X)
'j'ai donc 10, la valeur n'a pas ete modifiee
End Sub

Sub Carre(ByVal nombre As Integer)
nombre = nombre*nombre
End Sub


Mais du coup, pourquoi creer une procedure "carre" passer la variable en ByVal pour ne pas changer la valeur?

Est ce que quelqu'un aurait un exemple qui mettrait bien en avant l'utiliter de ByVal et donc, l'utiliter de preserver une valeur?

Merci de votre aide

1 réponse

Messages postés
16208
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 janvier 2022
1 580
bonjour,

globalement, si vous voulez:
-modifier le contenu de variables dans des procedures, utilisez ByRef ou ne mettez rien ByRef est par defaut
-ne pas modifier le contenu en retour de procedures alors utilisez Byref, dans les procdures vous pouvez modifiez le contenu des variables mais en retour dans le code principal les valeurs n'auront pas change

Dans l'exemple que vous avez pris, le Byval n'a pas de sens puisque vous voulez avoir le carre de x
ci-dessous une "utilite" de ByVal si dans la fonction vous auriez besoin de modifier nombre pour x raisons, mais de garder la valeur 10 de X dans le code principal
Sub MaValeur()
Dim X As Integer
X = 10
XX = Carre(X)
MsgBox (XX)
End Sub

Function Carre(ByVal nombre As Integer)
Carre = nombre * nombre
End Function


https://social.msdn.microsoft.com/Forums/vstudio/fr-FR/21c3f96c-f869-4ad1-87b5-421bb2599ac3/difference-entre-byval-et-byref?forum=vbasicfr