Je pense que c'est pour une raison d'optimisation : additionner des entiers sur 2 octets est forcément plus rapide que des entiers sur 4 octets ! (et c'est d'autant plus vrai pour les opérations lourdes telles que multiplications ou modulo).
Du coup, VB prend le type de données le plus petit possible pour faire l'addition, et si ca dépasse, tant pis pour toi.
Dans ton premier exemple, tu additionne un long avec un integer, donc VB renvoie un long, par contre, un integer avec un integer renvoie un integer, même si la variable stockant le résultat est un long !
Sinon, je tiens à remercier daetips qui a tout compris au schmilblick :) lol
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/