Long datatype act as an Integer

Bonjour,

J'ai un petit problème de dépassement de capacité (Erreur 6) avec les types de variable Long depuis quelque temps. (En fait depuis le dernier update de Windows 10 version 19041.685)

Dim nn as long

nn = 36 * 36 * 36
--- VBA me donne une erreur 6 Dépassement de capacité

Toutefois si je fais ça en 2 étapes, ça fonctionne:
nn = 36 * 36
nn = nn * 36
--- Pas d'erreur 6

Quelqu'un a une idée

2 réponses

  1. Bonjour,

    Par défaut de précision, 36 est un Integer d'où le problème (sinon voir lignes 14, 15, 16, 17) :
    Sub test()
    Dim I As Integer, L As Long, S As Single, D As Double, C As Currency, V As Variant, T As String
    Dim nn As Long
    
      I = 36: L = 36: S = 36: D = 36: C = 36: V = 36: T = "36"
      
      ' Pas d'erreur
      nn = L * L * L
      nn = S * S * S
      nn = D * D * D
      nn = C * C * C
      nn = V * V * V
      nn = T * T * T
      nn = 36# * 36# * 36#
      nn = 36 * 36 * 36#
      nn = 36# * 36 * 36
      nn = 36& * 36 * 36
      nn = 36 * 36: nn = nn * 36
      nn = CLng(36) * CLng(36) * CLng(36)
      nn = CSng(36) * CSng(36) * CSng(36)
      nn = CDbl(36) * CDbl(36) * CDbl(36)
      nn = CCur(36) * CCur(36) * CCur(36)
      nn = CStr(36) * CStr(36) * CStr(36)
      
      ' Dépassements de capacité
      nn = 36 * 36 * 36
      nn = I * I * I
      nn = CInt(36) * CInt(36) * CInt(36)
      
    End Sub


    0
    1. Contributeur
      Bonjour à tous,

      ils font quand même de drôles de choix chez MS.
      Il va falloir qu'ils changent de dealer, il leur refourgue de la m...
      nn=36 * 36 * 36 il ne convertit pas .
      Par contre nn = "36" * "36" * "36" là il convertit automatiquement.
      eric
      0