Sub Test()
Dim v As Long, z As Long, x As Long, a As Long, b As Long
a = 100000
b = 10000
v = (327 * 100) + 67 'ok ==> 32767
' v = 1000 * 100 'non ok
' v = 327 * 100 + 68 'non ok ==> 32768
x = 32768 * 1000 'ok
z = a * b 'ok
End Sub
Ce n'est pas vraiment un bogue mais une règle contestable: une multiplication de deux Integer est effectuée en Integer et plante donc si elle dépasse 32767. Par ailleurs une constante spécifiée sans caractère suffixe de type est assumée du plus court type pouvant la valoir.
Oui bien sûr c'est le compilo qui choisit de fabriquer le résultat sur un entier (VBA) en basant son choix sur le fait que les 2 constantes sont des entiers. Donc on se cogne au plafond des 32767. Mais Mr Compilo ne fait pas le bon choix madame.
C'est facile de contourner l'affaire avec vos multiples propositions.