ByVal interet
Résolu
bibivanhoa
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
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:
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
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
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
https://social.msdn.microsoft.com/Forums/vstudio/fr-FR/21c3f96c-f869-4ad1-87b5-421bb2599ac3/difference-entre-byval-et-byref?forum=vbasicfr
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