>nborges : merci de ta réponse, mais elle ne correspond pas exactement à la question que je me posais. Je me suis mal exprimé. Je vais préciser si tu veux bien.
J'ai bien compris la différence entre un "ByVal" et un "ByRef" dans un appel de procédure ou fonction.
Mais comme l'a dit Renfield (merci à lui) la classe String est bien de type référence. Je reviens donc à ma question avec un exemple pour etre plus précis.
Avec des variables de type 'valeur' les variables sont distinctes, c'est à dire :
Dim A,B as Integer
A=1
B=A
A=2
dans ce cas le fait de modifier A ne modifie pas B (A=2 et B=1)
tandis-que pour des variables de type 'référence', on ne travaille plus sur les valeurs mais sur l'adressage (il me semble) donc par exemple avec des tableaux :
Dim A(2)
Dim B(2)
si j'affecte des valeurs différentes dans les deux tableaux
A(0)=1 : A(1)=2 : B(0)=3 : B(1)=4
si ensuite je fais
B=A
et que je change les valeurs du tableau A
A(0)=5 : A(1)=6
les valeurs du tableau B s'en trouvent également modifiées (on pointe sur les mêmes adresses je pense)
Et donc j'en viens à ma question sur la variable String, elle est de type 'référence' mais se comporte comme un type 'valeur', car si je fais
Dim A,B as String
A="un"
B=A
A="deux"
cela ne modifie pas B.
En conclusion : String est de type 'référence' et se comporte comme un type 'valeur'
Je voulais donc savoir si il y avait une explication à cela ? une raison que cela soit ainsi ?
nborges, même si ta réponse ne correspond pas tout à fait à ce que j'attendais, je te remercie du temps consacré, et peut etre pourras tu me donner plus de précision, merci à toi 
Peut etre que je me pose une question inutile en fait...
mais je cherche à comprendre