Microsoft 365 VBA division : dépassement de capacité

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour,

Je ne comprends pas pourquoi je reçois une erreur de dépassement de capacité, alors que je voudrais juste diviser deux colonnes :
1670886222074.png


Les données sont bien numérique.
Merci pour votre aide !
 

Pièces jointes

  • test.xlsm
    270.3 KB · Affichages: 5
Dernière édition:

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonsoir.
Il est vraisemblable que vous ayez déclaré DernLigne ou i As Integer, c'est à dire comme entier signé sur 2 octets, qui ne peut supporter de valeur supérieure à 32767.
Si tel est le cas changez pour As Long.
Sinon joignez le classeur, qu'on puisse chercher une autre c

Bonsoir.
Il est vraisemblable que vous ayez déclaré DernLigne ou i As Integer, c'est à dire comme entier signé sur 2 octets, qui ne peut supporter de valeur supérieure à 32767.
Si tel est le cas changez pour As Long.
Sinon joignez le classeur, qu'on puisse chercher une autre cause.
Bonjour,

Merci pour votre message, j'ai vérifié mais ça ne marche pas, j'ai joint le classeur à ma question.
 

Dranreb

XLDnaute Barbatruc
Je l'aurais écrit assez différemment, car je ne travaille jamais directement avec les cellules individuelles, c'est trop lent, toujours via des tableaux dynamiques :
VB:
Option Explicit
Sub Test()
   Dim Wsh As Worksheet, TD(), LMax As Long, TR(), L As Long
   On Error Resume Next
   Set Wsh = Worksheets("Résultats")
   If Err Then Err.Clear: Set Wsh = Worksheets("RESULTATS")
   If Err Then MsgBox "L'onglet ""RESULTAT"" n'existe pas dans le classeur actif.", _
      vbCritical, "Test": Exit Sub
   If Wsh.[C1].Value = "Coût" Then Wsh.Columns("C").Delete
   TD = Wsh.[B2].Resize(Wsh.[A1000000].End(xlUp).Row - 1, 2).Value
   LMax = UBound(TD, 1)
   ReDim TR(1 To LMax, 1 To 1)
   For L = 1 To LMax
      If TD(L, 2) <> 0 Then TR(L, 1) = TD(L, 1) / TD(L, 2)
      If Err Then
         Application.Goto Wsh.[B1:C1].Offset(L)
         MsgBox "Err " & Err & " sur :" & vbLf & TD(L, 1) & " / " & TD(L, 2) _
            & vbLf & Err.Description, vbCritical, "Test"
         Exit Sub: End If
      Next L
   Wsh.Columns("C").Insert
   With Wsh.[C1]: .Value = "Coût": .Interior.Color = RGB(0, 128, 0): End With
   Wsh.[C2].Resize(LMax).Value = TR
   End Sub
 

Statistiques des forums

Discussions
314 486
Messages
2 110 114
Membres
110 670
dernier inscrit
Mangouste