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