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
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki