07 - Dépassement de capacité - Capacity overflow (VBA)

La ligne de code VBA suivante retourne l’erreur : « Dépassement de capacitéCapacity overflow”

'VolTerre = ((6000 * 6) + UserFormGSE3.TextBoxSurf_Sol.Value + TextBoxSurf_Voirie.Value) / TextBox1.Value

Alors que les valeurs des différentes variables sont :

·         TextBoxSurf_Sol.Value: 350

·         TextBoxSurf_Voirie.Value: 9000

·         TextBox1.Value: 0.3

 

Dépassement de capacité : Ce problème est relativement subtil. Il provient de la multiplication de 6000 x 6. Car si ces deux valeurs sont traitées comme entiers ­ Integer ­ par VBA, le résultat dépasse la capacité d’un nombre entier qui, en VBA est comprise entre -32768 et +32767.

Pour remédier à ce problème, il faut réécrire la ligne de code de la façon suivante :

VolTerre = ((CLng(6000) * NbCell) + UserFormGSE3.TextBoxSurf_Sol.Value + TextBoxSurf_Voirie.Value) * CDbl(TextBox1.Value) '[Task 31]

 

Noter les conversions : CLng et CDbl